• 初始 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 是动态数组,从数据结构上来讲,是基于数组实现的线性表(即顺序表)。

    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 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 subList(int fromIndex, int toIndex) 截取部分 list

    代码示例:

    1. public class Demo2 {
    2. public static void main(String[] args) {
    3. List courses = new ArrayList<>();
    4. courses.add("C 语言");
    5. courses.add("Java SE");
    6. courses.add("Java Web");
    7. courses.add("Java EE");
    8. // 和数组一样,允许添加重复元素
    9. courses.add("C 语言");
    10. // 按照添加顺序打印
    11. System.out.println(courses);
    12. // 类似数组下标的方式访问
    13. System.out.println(courses.get(0));
    14. System.out.println(courses);
    15. courses.set(0, "计算机基础");
    16. System.out.println(courses);
    17. // 截取部分 [1, 3)
    18. List subCourses = courses.subList(1, 3);
    19. System.out.println(subCourses);
    20. // 重新构造
    21. List courses2 = new ArrayList<>(courses);
    22. System.out.println(courses2);
    23. List courses3 = new LinkedList<>(courses);
    24. System.out.println(courses3);
    25. // 引用的转换
    26. ArrayList courses4 = (ArrayList) courses2;
    27. System.out.println(courses4);
    28. // LinkedList c = (LinkedList)course2; 错误的类型
    29. LinkedList courses5 = (LinkedList) courses3;
    30. System.out.println(courses5);
    31. // ArrayList c = (ArrayList)course3; 错误的类型
    32. }
    33. }

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

  • 相关阅读:
    Spring 循环依赖
    【BI工具】-- Superset 、Metabase 和 Redash 对比
    操作符keyof的作用是什么
    产品端数据分析思维
    TDengine可通过数据同步工具 DataX读写
    【技术分享】RK356X Android 使用 libgpiod 测试gpio
    计算机组成原理期末复习第四章-1(唐朔飞)
    一文教你如何设计出优秀的测试用例(文档+视频)
    Actor 生命周期
    redis概念及python操作
  • 原文地址:https://blog.csdn.net/AlinaQ05/article/details/126145749