基于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 linkList = new LinkedList();
        此时first=null;last=null;

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

        

linkList.add("A")

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

   

linkList.add("B")

你可能感兴趣的:(基于jdk1.8版本的LinkedList底层原理解析)