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:链表中实际存储的元素数量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App