基于jdk1.8版本的LinkedList底层原理解析

    LinkedList底层是通过一个双向链表实现,需要注意的是LinkedList不是线程安全的。

1、主要参数

主要参数

first:指向头结点;
last:指向尾节点;

2、构造函数

默认构造器

构造空的list

3、add方法源码解析。

        首先将last保存在l,新建一个Node,让last指向newNode。如果是第一次添加(原先list是空),则l肯定为null,此时让first指向newNode,此时first和last都指向newNode,size加1;如果list不为空,则直接将newNode添加到list的尾部,即让原先list中的last节点的next指向newNode,此时first指向头结点,last指向newNode。

add


linkLast

        这里需要注意的是,在执行final Node newNode =new Node<>(l, e, null);的时候,会将last传到新节点,将新节点的Prev指向last,构成双向链表


①、List<String> linkList = new LinkedList<String>();
        此时first=null;last=null;

②、第一次添加元素:linkList.add("A");
        如图可以发现,第一次添加“A”后,头指针(first)和尾指针(last)都指向了A这个Node节点。

        

linkList.add("A")

③、第二次添加元素:linkList.add("B");
        图中双向箭头代表双向链表

   

linkList.add("B")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容