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

Arraylist 是动态数组,从数据结构上来讲,是基于数组实现的线性表(即顺序表)。
Linkedlist 底层使用的是双向循环链表数据结构。
❀❀ ArrayList 和 LinkedList 的区别:❀❀
1. 底层实现不同:Arraylist 底层使用的是动态数组,Linkedlist 底层使用的是双向循环链表数据结构。
2. 时间复杂度不同:Arraylist 插入和删除元素的时间复杂度受元素位置的影响,如果尾插时间复杂度是O(1),其它时候就是O(N)。Linkedlist 插入删除不受位置影响,时间复杂度都是O(1)。
3. Arraylist 支持快速随机访问,而 Linkedlist 不支持。快速随机访问就是可以通过序号(索引位置)快速获取元素。
4. 消耗空间不同:Arraylist 使用的数组结尾时会预留一些空间,而 Linkedlist 中每个元素需要消耗比 Arraylist 更多的空间用来存放直接前驱,后继以及数据本身。
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的。
♥增加:
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 | 截取部分 list |
代码示例:
- public class Demo2 {
- public static void main(String[] args) {
- List
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
subCourses = courses.subList(1, 3); - System.out.println(subCourses);
- // 重新构造
- List
courses2 = new ArrayList<>(courses); - System.out.println(courses2);
- List
courses3 = new LinkedList<>(courses); - System.out.println(courses3);
- // 引用的转换
- ArrayList
courses4 = (ArrayList) courses2; - System.out.println(courses4);
- // LinkedList
c = (LinkedList)course2; 错误的类型 - LinkedList
courses5 = (LinkedList) courses3; - System.out.println(courses5);
- // ArrayList
c = (ArrayList)course3; 错误的类型 - }
- }
活动地址:CSDN21天学习挑战赛