# List基础
作者:Ethan.Yang
博客:https://blog.ethanyang.cn (opens new window)
List 是 Java 集合中最常用的接口之一,用于存储有序、可重复的元素集合。它提供了按索引访问、插入、删除等常用操作。
# 一、ArrayList
# 特点:
- 底层基于 动态数组 实现。
- 支持快速随机访问(通过索引获取元素快)。
- 插入、删除元素时效率相对较低,尤其在中间位置操作时。
# 应用场景:
- 读多写少的场景,如缓存列表、结果集等。
# 常用API:
add(E e):添加元素get(int index):获取指定位置的元素remove(int index):删除指定位置的元素size():获取元素个数
# 示例代码:
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
System.out.println("第一个元素:" + list.get(0));
list.remove(1);
System.out.println("删除后列表:" + list);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 二、LinkedList
# 特点:
- 底层基于 双向链表 实现。
- 插入和删除效率较高(尤其在首尾或中间位置)。
- 随机访问效率较低。
# 应用场景:
- 插入删除频繁、首尾操作较多的场景,如队列、栈实现。
# 常用API:
addFirst(E e)/addLast(E e):在头/尾添加元素removeFirst()/removeLast():移除头/尾元素get(int index):按位置获取元素
# 示例代码:
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Tom");
list.add("Jerry");
list.addFirst("Alice");
System.out.println("链表内容:" + list);
list.removeLast();
System.out.println("删除最后一个后:" + list);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 三、Vector
# 特点:
- 底层同样基于 动态数组 实现。
- 与
ArrayList类似,但线程安全(方法加了synchronized)。 - 性能较差,实际开发中已较少使用。
# 应用场景:
- 早期并发场景(现已被
Collections.synchronizedList或CopyOnWriteArrayList替代)。
# 示例代码:
import java.util.Vector;
public class VectorDemo {
public static void main(String[] args) {
Vector<Integer> vector = new Vector<>();
vector.add(10);
vector.add(20);
vector.add(30);
System.out.println("Vector内容:" + vector);
vector.remove(1);
System.out.println("删除后:" + vector);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14