ArrayList:适用于需要频繁随机访问元素
LinkedList:适用于需要频繁进行插入和删除操作,尤其是在列表的头部或尾部进行操作
二者的用法基本一致,只是时间和空间复杂度不同
List<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
arrayList.add(i);
}
// 随机访问第 5 个元素
int element = arrayList.get(5);
-----------------------------------------------
List<Integer> linkedList = new LinkedList<>();
for (int i = 0; i < 10; i++) {
linkedList.add(i);
}
// 随机访问第 5 个元素
int element = linkedList.get(5);
List<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
arrayList.add(i);
}
// 在索引为 5 的位置插入元素 100
arrayList.add(5, 100);
---------------------------------------------
LinkedList<Integer> linkedList = new LinkedList<>();
for (int i = 0; i < 10; i++) {
linkedList.add(i);
}
// 在索引为 5 的位置插入元素 100
linkedList.add(5, 100);
- ArrayList:
ArrayList
的内存占用相对较小,主要是数组本身的内存开销。但在数组扩容时,会有额外的内存分配和元素复制操作。 - LinkedList:
LinkedList
的每个节点除了存储元素本身外,还需要额外的引用(指向前一个节点和后一个节点),因此内存占用相对较大。