LinkedList源码解析

85 阅读2分钟

本文参与「新人创作礼」活动,一起开启掘金创作之路。

我的变强之路

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、添加、删除快;查找、修改慢;