List集合

55 阅读2分钟

List 集合

List 集合体系图

List 集合体系图.jpg

List 集合介绍

List 集合属于Collection集合体系,所以Collection中的方法在list中都适用;
List 集合特点:
    1.有序:存和取的元素顺序一致;
    2.有索引:可以通过索引操作元素;
    3.可重复:存储的元素可以重复;
    
    
知识拓展:
ArrayList 的内容看这里:https://juejin.cn/post/7217795158368976933
LinkedList 的内容看这里:https://juejin.cn/post/7217795738692796453
Vector 的内容看这里:暂无

List 集合的特有方法

1.Collection中的方法List都继承了;
2.List集合因为有索引,所以多了很多索引操作的方法;
3.特有方法介绍
    * void add(int index, E e);// 在指定的位置插入指定的元素
    * E remove(int index);// 删除指定位置的元素,并返回该元素
    * E set(int index, E e);// 修改指定位置的元素,返回被修改的元素
    * E get(int index);// 返回指定位置的元素
4.特有方法细节
    * void add(int index, E e);
    细节:原来索引上的元素依次往后移。

List 遍历方式

List有5种遍历方式:
    1.迭代器
    2.列表迭代器
    3.增强for
    4.Lambda表达式
    5.普通for循环(List集合有索引)

知识拓展:
    Iterator 迭代器的内容看这里:https://juejin.cn/post/7217636750817443900
    ListIterator 列表迭代器 的内容看这里:https://juejin.cn/post/7217601930918854693
    Lambda表达式 的内容看这里:https://juejin.cn/post/7217425505925627961

List 遍历方式 代码演示:

    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");

    // 1.迭代器遍历
    System.out.println("1.迭代器遍历 -------------------");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
        String str = iterator.next();
        System.out.println(str);
    }

    // 2.列表迭代器遍历
    System.out.println("2.列表迭代器遍历 -------------------");
    ListIterator<String> listIterator = list.listIterator();
    while (listIterator.hasNext()) {
        String str = listIterator.next();
        System.out.println(str);
    }

    // 3.增强for遍历
    System.out.println("3.增强for遍历 -------------------");
    for (String str : list) {
        System.out.println(str);
    }

    // 4.Lambda表达式遍历
    System.out.println("4.Lambda表达式遍历 -------------------");
    list.forEach(str -> System.out.println(str));

    // 5.普通for循环遍历(List集合有索引)
    System.out.println("5.普通for循环遍历(List集合有索引)-------------------");
    for (int i = 0; i < list.size(); i++) {
        String str = list.get(i);
        System.out.println(str);
    }

List 的5种遍历方式对比:

这个多,怎么用?
1.迭代器:在遍历过程中需要删除元素,用这个;
2.列表迭代器:在遍历过程中需要添加元素,用这个;
3.增强for:只是想遍历,用这个;
4.Lambda表达式:只是想遍历,用这个;
5.普通for循环:在遍历过程中想要操作索引,用这个;

List 集合MST

Q1.看下面代码回答问题:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

list.remove(1);

请问,这时候remove方法删除的是那一条数据?为什么?
A:
这时候remove方法删除的是第二条数据,因为在List集合中有两个remove方法,
    * E remove(int index);// List特有方法,操作索引的
    * boolean remove(Object o);// 继承Collection集合的,操作元素的
这里需要注意,当调用方法的时候,方法出现了重载,会优先调用实参跟形参类型一致的那个方法。
所以这里调用的是操作索引的remove方法,而不是操作对象的remove方法。