List的三种实现类

package com.qiaoyx.java;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.PrimitiveIterator;

/**
 * 相同点:都存储有序可重复的数据
 * ArrayList:底层封装数组,线程不安全,效率高,较常用
 * LinkedList:双向链表,插入和删除效率高
 * Vector:线程安全,效率低,版本较低一般不用
 * @author: qyx
 * @date: 2022-08-03 18:57
 * @desc:
 */
public class ListTest {

    @Test
    public void test1(){
        ArrayList list = new ArrayList();
        list.add(123);
        list.add(456);
        list.add("AA");
        list.add(new Person("Tom",12));
        list.add(456);
        list.add(1,"BB");
        List list1 = Arrays.asList(1, 2, 3);
        list.add(list1);
        System.out.println(list);
        System.out.println(list.get(0));
    }

    //LinkedHashSet的使用
    //LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据
    //优点:对于比较频繁的遍历操作,LinkedHashSet的效率要高于HashSet
    @Test
    public void test2(){
        ArrayList list = new ArrayList();
        list.add(123);
        list.add(456);
        list.add("AA");
        list.add(new Person("Tom",12));
        list.add(456);
        System.out.println(list.indexOf(4567));//正着查找元素的索引,如果不存在返回负一
        System.out.println(list.lastIndexOf(456));//查找元素的索引(倒着找)
        System.out.println(list.remove(0));//移除指定索引的元素,并返回该元素
        System.out.println(list);
        list.set(1,"CC");
        System.out.println(list);
        List list1 = list.subList(2, 4);
        System.out.println(list1);

        int[] arr = new int[2];
        for(int a :arr){

        }
    }
}




package com.qiaoyx.java;

import java.util.Objects;

/**
 * @author: qyx
 * @date: 2022-08-02 22:20
 * @desc:
 */
public class Person {
    private int age;
    private String name;

    public Person() {
    }

    public Person(String name, int age) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        System.out.println("Person.equals()......   ");
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(age, name);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值