LinkedList源码解析

LinkedList源码解析

特点:有序、线程不安全

1、数据结构:双向链表
模型:
在这里插入图片描述

2、创建
无参创建时不做任何操作
在这里插入图片描述
有参创建时,参数为Collection即集合,将参数转数组全部存入创建的LinkedList中
在这里插入图片描述

3、调用add方法添加元素 尾插法将新节点放到最后 返回boolean值
在这里插入图片描述
在这里插入图片描述
141行:获取尾节点
142行:用当前数据创建一个新节点,新节点的前一个节点是当前的尾节点
143行:新节点插入尾节点
144行:判断新节点未插入前的尾节点是不是null,如果是的话即第一次插入,将头尾节点都设置为第一次插入的节点
147行:否则不是第一次插入,指定插入前尾节点的下一个节点是新节点
148行:长度+1
149行:操作数+1

4、调用get获取元素 判断传入的index是否小于链表长度的1/2,如果是则从头节点开始往后遍历index次;如果index大于链表长度的1/2,则从尾节点开始往前遍历index次;保证遍历次数小于链表长度的1/2
在这里插入图片描述
checkElementIndex(index); 检查index是否超出链表长度
在这里插入图片描述
if判断条件用index和链表长度size右移一位即size/2的值判断,其实就是二分链表,如果index在前半部分就从首节点遍历index次获取节点,如果index在后半部分就从尾节点遍历index次获取节点,最后返回节点中存储的数据;

5、添加过程中没有做任何同步操作,线程不安全!

6、添加、删除快;查找、修改慢;

posted @   有锦  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示