什么是 Java 的 LinkedList?
LinkedList 是 Java 集合框架中的一个类,位于 java.util 包中。它实现了 List 接口,并且是一个双向链表结构,可以高效地进行插入和删除操作。
主要特点
双向链表:每个节点包含指向前一个节点和后一个节点的引用。
动态大小:链表的长度可以根据需要动态变化。
非同步:LinkedList 不是线程安全的,如果多个线程同时访问一个 LinkedList 实例,需要手动进行同步处理。
构造方法
LinkedList 提供了两个主要构造方法:
-  默认构造方法: LinkedList<E> list = new LinkedList<>();
-  带集合参数的构造方法: LinkedList<E> list = new LinkedList<>(Collection<? extends E> c);
主要方法
-  添加元素: - add(E e): 在列表末尾添加元素。
- addFirst(E e): 在列表开头添加元素。
- addLast(E e): 在列表末尾添加元素(等同于- add(E e))。
- add(int index, E element): 在指定位置添加元素。
 list.add("element"); list.addFirst("firstElement"); list.addLast("lastElement"); list.add(1, "secondElement");
-  获取元素: - get(int index): 获取指定位置的元素。
- getFirst(): 获取第一个元素。
- getLast(): 获取最后一个元素。
 String firstElement = list.getFirst(); String lastElement = list.getLast(); String secondElement = list.get(1);
-  删除元素: - remove(): 删除并返回第一个元素。
- removeFirst(): 删除并返回第一个元素(等同于- remove())。
- removeLast(): 删除并返回最后一个元素。
- remove(int index): 删除并返回指定位置的元素。
 list.remove(); list.removeFirst(); list.removeLast(); list.remove(1);
-  其他方法: - size(): 返回链表的元素个数。
- clear(): 清空链表。
- contains(Object o): 判断链表是否包含指定元素。
- isEmpty(): 判断链表是否为空。
- toArray(): 将链表转换为数组。
 int size = list.size(); list.clear(); boolean containsElement = list.contains("element"); boolean isEmpty = list.isEmpty(); Object[] array = list.toArray();
优点:
- 动态大小,可以高效地进行插入和删除操作。
- 实现了双向链表,可以双向遍历。
缺点:
- 由于节点存储了指向前后节点的引用,内存开销较大。
- 不能随机访问,需要遍历来找到指定位置的元素,时间复杂度为 O(n)。
使用场景
- 需要频繁插入和删除操作:例如实现队列和栈。
- 需要动态调整大小:链表可以根据需要动态增加或减少大小。
- 需要双向遍历:例如实现双向迭代器。
示例代码
下面是一个简单的示例,展示了如何使用 LinkedList:
import java.util.LinkedList;public class LinkedListExample {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();// 添加元素list.add("Apple");list.add("Banana");list.addFirst("Orange");list.addLast("Grapes");// 获取元素System.out.println("First Element: " + list.getFirst());System.out.println("Last Element: " + list.getLast());// 删除元素list.removeFirst();list.removeLast();// 遍历链表for (String element : list) {System.out.println("Element: " + element);}}
}
LinkedList 是 Java 集合框架中一个强大的类,适用于需要频繁插入和删除操作的场景。虽然它的随机访问性能不如数组,但它在动态调整大小和双向遍历方面表现出色。理解并掌握 LinkedList 的使用,对提升 Java 编程能力非常有帮助。