
LinkedList源码分析
发布日期:2021-05-14 09:35:26
浏览次数:24
分类:精选文章
本文共 1110 字,大约阅读时间需要 3 分钟。
ArrayList和LinkedList的主要区别在于它们的实现原理。ArrayList采用数组的形式,而LinkedList则采用链表的形式。
ArrayList使用数组作为内部存储结构,这意味着它支持快速随机访问和较优的插入删除操作。然而, ArrayList在数据修改时可能会引起元素的位置Shift,因为需要移动大量的元素。
相比之下,LinkedList采用了链表的实现方式,通常实现的是双向链表。每个节点不仅记录下一个节点的位置,还记录前一个节点的位置。具体来说,链表的首节点(head)和尾节点(tail)记录了整个链表的起点和终点。这种结构使得 LinkedList 在插入和删除操作时能够保持较好的性能,尤其是在需要频繁插入和删除操作的情况下。
以下是 LinkedList 常用的实现细节分析:
创建
- 无参数构造函数:调用
new LinkedList()
时,内部不会进行任何初始化操作。 - 带有集合的构造函数:
LinkedList(Collection<?> c)
这个构造函数会调用addAll(c)
方法,将集合中的元素逐一添加到 LinkedList 中。
添加元素
- addFirst(E e):将元素插入到链表的首部。
- addLast(E e):将元素插入到链表的尾部。
- add(E e):默认情况下,会 调用 addLast方法,将元素添加到尾部。
- addAll(Collection c)** 和 **addAll(int index, Collection c):这两个方法负责将给定的集合中的元素添加到链表中,支持按索引位置插入。
- add(int index, E element):在指定位置插入元素。
删除元素
- removeFirst() 和 removeLast():分别移除并返回链表的首节点和尾节点。
- remove(Object o):通过遍历链表查找目标元素并移除其节点。
- remove(int index):根据索引位置移除链表中的元素。
修改元素
- set(int index, E element):根据索引位置修改链表中的元素。
查找元素
- getFirst()、getLast()、get(int index):分别返回链表的首尾元素和指定位置的元素。
- indexOf(Object o) 和 lastIndexOf(Object o):通过遍历链表查找元素,返回其对应的索引位置。
其他方法
- size():返回链表的元素个数。
通过上述分析可以看出, LinkedList 的主要优势在于其链表结构的特点,使得它在进行插入和删除操作时能够支持更灵活和高效的操作。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月02日 14时10分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
树套树板子
2019-03-11
Linux命令 - pwd命令
2019-03-11
Mysql学习笔记
2019-03-11
最大的和
2019-03-11
跳台阶
2019-03-11
另类加法,走方格的方案数,最近公共祖先
2019-03-11
线程学习5
2019-03-11
给LaTeX表格加脚注时的奇怪问题(使用PDFLaTeX)
2019-03-11
[Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
2019-03-11
GitHub完整记录数据库GHTorrent的下载和安装经验
2019-03-11
SKLearn中SVM参数自动选择的最简单示例(使用GridSearchCV)
2019-03-11
NetworkX学习笔记-3-Python中输出Gephi文件格式的方法
2019-03-11
设计模式—— 三:依赖倒置原则
2019-03-11
SpringBoot打包之后乱码
2019-03-11
RabbitMQ配置
2019-03-11
因SGA分配错误无法启动数据库
2019-03-11
Oracle修改字段类型方法总结
2019-03-11
ORA-00020 超过当前最大连接数
2019-03-11
合理控制oracle数据库具有DBA权限的用户
2019-03-11