LinkedList
LinkedList
LinkedList 是 Java 集合框架中的一个类,它实现了 List 接口和 Deque 接口,基于双向链表的数据结构。LinkedList 提供了高效的插入和删除操作,适合频繁修改的场景
特点
-
基于双向链表:
-
LinkedList 内部使用双向链表来存储元素。
-
每个节点(Node)包含三个字段:item(存储元素)、next(指向下一个节点)、prev(指向上一个节点)。
-
LinkedList内部维护了两个属性first和last分别指向首节点和尾节点
-
-
有序且允许重复
- 元素按照插入顺序存储。
- 允许存储重复的元素
-
允许 null 元素
- LinkedList 可以存储 null 值,且可以存储多个 null
-
非线程安全
-
高效的插入和删除
- 在链表头部或尾部插入或删除元素的时间复杂度为 O(1)。
- 在链表中间插入或删除元素的时间复杂度为 O(n),因为需要遍历链表
常用方法
LinkedList 实现了 List 接口和 Deque 接口,因此支持 List 和 Deque 的所有方法
- 添加元素
- void addFirst(E e):在链表头部插入一个元素。
- void addLast(E e):在链表尾部插入一个元素
- 删除元素
- E removeFirst():移除并返回链表头部的元素。
- E removeLast():移除并返回链表尾部的元素
- 查询元素
- E getFirst():返回链表头部的元素。
- E getLast():返回链表尾部的元素
- 队列和双端队列操作
- boolean offer(E e):在链表尾部插入一个元素(队列操作)。
- E poll():移除并返回链表头部的元素(队列操作)。
- E peek():返回链表头部的元素,但不移除(队列操作)。
- void push(E e):在链表头部插入一个元素(栈操作)。
- E pop():移除并返回链表头部的元素(栈操作)
底层实现
LinkedList 的底层是一个双向链表,核心字段包括:
-
Node
first:指向链表头部的节点。 -
Node
last:指向链表尾部的节点。 -
int size:链表中实际存储的元素数量

浙公网安备 33010602011771号