初始 List 接口

目录

1. 什么是 List

 2. List 常见实现类

2.1 ArrayList 类

2.2 LinkedList 类

2.3 Vector 类

3. 常用方法


1. 什么是 List

​List 是 Java 中线性表定义的接口,是有序集合(也称为序列 ),是实现 Collection 接口中的一个接口。 该接口中可以精确控制列表中每个元素的插入位置。 用户可以通过索引访问元素,并搜索列表中的元素。

 2. List 常见实现类

2.1 ArrayList 类

Arraylist 是动态数组,从数据结构上来讲,是基于数组实现的线性表(即顺序表)。

扫描二维码关注公众号,回复: 14438545 查看本文章

2.2 LinkedList 类

Linkedlist 底层使用的是双向循环链表数据结构。

❀❀ ArrayList 和 LinkedList 的区别:❀❀

1. 底层实现不同:Arraylist 底层使用的是动态数组,Linkedlist 底层使用的是双向循环链表数据结构。

2. 时间复杂度不同:Arraylist 插入和删除元素的时间复杂度受元素位置的影响,如果尾插时间复杂度是O(1),其它时候就是O(N)。Linkedlist 插入删除不受位置影响,时间复杂度都是O(1)

3. Arraylist 支持快速随机访问,而 Linkedlist 不支持。快速随机访问就是可以通过序号(索引位置)快速获取元素。

4. 消耗空间不同:Arraylist 使用的数组结尾时会预留一些空间,而 Linkedlist 中每个元素需要消耗比 Arraylist 更多的空间用来存放直接前驱,后继以及数据本身。

2.3 Vector 类

Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的。

3. 常用方法

♥增加:

add(存储的具体元素);

add(int index, 数据类型 data);

♥查找:

get(int index)

contains(元素)

♥修改:

set(int index,数据类型 修改后的数值)

♥删除:

remove(int index)

remove(Object o)

若 list 保存的是个 int 类型,调用 remove(int),实际上删除的是索引;删除元素,先迭代取得该元素对应的索引,再调用 remove 删除元素。


boolean add(E e)  尾插 e
void add(int index, E element)  将 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)  尾插 c 中的元素
E remove(int index)  删除 index 位置元素
boolean remove(Object o) 删除遇到的第一个 o
E get(int index)  获取下标 index 位置元素
E set(int index, E element)  将下标 index 位置元素设置为 element
void clear()  清空
boolean contains(Object o)  判断 o 是否在线性表中
int indexOf(Object o)  返回第一个 o 所在下标
int lastIndexOf(Object o)  返回最后一个 o 的下标
List<E> subList(int fromIndex, int toIndex)  截取部分 list

代码示例:

public class Demo2 {
    public static void main(String[] args) {
        List<String> courses = new ArrayList<>();
        courses.add("C 语言");
        courses.add("Java SE");
        courses.add("Java Web");
        courses.add("Java EE");
        // 和数组一样,允许添加重复元素
        courses.add("C 语言");
        // 按照添加顺序打印
        System.out.println(courses);
        // 类似数组下标的方式访问
        System.out.println(courses.get(0));
        System.out.println(courses);
        courses.set(0, "计算机基础");
        System.out.println(courses);
        // 截取部分 [1, 3)
        List<String> subCourses = courses.subList(1, 3);
        System.out.println(subCourses);
        // 重新构造
        List<String> courses2 = new ArrayList<>(courses);
        System.out.println(courses2);
        List<String> courses3 = new LinkedList<>(courses);
        System.out.println(courses3);
        // 引用的转换
        ArrayList<String> courses4 = (ArrayList<String>) courses2;
        System.out.println(courses4);
        // LinkedList<String> c = (LinkedList<String>)course2; 错误的类型
        LinkedList<String> courses5 = (LinkedList<String>) courses3;
        System.out.println(courses5);
        // ArrayList<String> c = (ArrayList<String>)course3; 错误的类型
    }
}

活动地址:CSDN21天学习挑战赛

猜你喜欢

转载自blog.csdn.net/AlinaQ05/article/details/126145749