目录
什么是LinkedList集合
LinkedList 集合是Java编程语言中的一种双向链表数据结构,它实现了 List 接口和 Deque 接口。
与 ArrayList 类似,LinkedList 也是一种动态数组,可以根据需要动态地增加或减少元素的大小。
然而,LinkedList 与 ArrayList 在内部实现和性能方面有所不同
LinkedList 使用双向链表来存储元素,每个元素都包含一个指向前一个元素和后一个元素的引用,这种结构使得 LinkedList 在插入和删除元素时效率较高,因为它只需要调整节点的引用,而不需要移动其他元素
LinkedList的一些常见应用场景包括以下 5 类
1, 需要频繁插入和删除元素的场景,因为 LinkedList 在插入和删除操作上效率较高。
2. 实现队列和双向队列的场景,因为 LinkedList 实现了 Deque 接口。
3. 实现堆栈的场景,可以 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟堆栈的入栈和 出栈操作。
4. 实现循环链表的场景,因为 LinkedList 的首尾节点相连,可以形成一个循环链表。
5. 需要进行大量顺序遍历操作的场景,因为 LinkedList 的顺序遍历效率较高。
需要注意的是,与 ArrayList 一样,LinkedList 也不是线程安全的。
如果在多个线程中同时访问和修改 LinkedList,可能会引发并发访问的问题,
在多线程环境中使用 LinkedList 时,应该采取相应的线程安全措施,
如使用同步机制或使用线程安全的替代方案。
LinkedList的方法
方法名 | 描述 | |
add() |
| |
add(int ,E) |
| |
clear() |
| |
get() |
| |
remove() |
| |
size() |
| |
set() |
|
LinkedList集合的使用
以下是 LinkedList 集合的一些常见使用方式的示例代码:
1 创建 LinkedList 集合、添加元素、遍历元素
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("aaaaa");
linkedList.add("bbbbb");
linkedList.add("ccccc");
for (String key : linkedList) {
System.out.println(key);
}
输出结果
aaaaa
bbbbb
ccccc
2 在指定位置插入元素
linkedList.add(1, "nnnnn");
System.out.println(linkedList);
输出结果
[aaaaa, nnnnn, bbbbb, ccccc]
3 获取指定位置的元素
String a = linkedList.get(1);
System.out.println(a);
输出结果
bbbbb
//下标从0开始
4 删除指定位置的元素
linkedList.remove(1);
根据下标删除
5 在开头或末尾插入元素
linkedList.addFirst("grape");
linkedList.addLast("watermelon");
System.out.println(linkedList);
输出结果
[grape, aaaaa, bbbbb, ccccc, watermelon]
LinkedList集合的应用场景
1,需要频繁地进行元素插入和删除操作的场景:由于 LinkedList 采用双向链表的数据结构,插入和删除元素的效率较高,因为只需要调整节点的引用即可,而不需要像数组一样移动其他元素。
2,实现队列和双向队列的场景:LinkedList 实现了 Deque 接口,因此可以用来实现队列和双向队列。例如,可以使用 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟队列的入队和出队操作。
3,实现堆栈的场景:LinkedList 也可以用来实现堆栈数据结构。通过使用 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟堆栈的入栈和出栈操作。
4,需要进行大量顺序遍历操作的场景:LinkedList 的顺序遍历效率较高,因为它是一个链表数据结构,可以按顺序依次遍历元素。
5,实现循环链表的场景:由于 LinkedList 的首尾节点相连,可以形成一个循环链表。这在某些场景下可能会有用,例如处理循环队列。
如果你还不理解的话,那通俗易懂的讲就是:
- 需要频繁地进行插入和删除操作。
- 需要高效地使用迭代器进行遍历操作。
- 不需要随机访问元素,或者只需要在链表的头部和尾部进行访问。