1、底层实现原理
LinkedList底层的数据结构是基于双向循环链表的,且头结点中不存放数据,如下:
既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点位置信息,如下图所示:
2、linkedList添加数据过程:
第一步:初始化后LinkedList实例的情况:
第二步:初始化一个预添加的Entry实例(newEntry)。
Entry newEntry = newEntry(e, entry, entry.previous);
第三步:调整新加入节点和头结点(header)的前后指针。
newEntry.previous.next = newEntry;
newEntry.previous即header,newEntry.previous.next即header的next指向newEntry实例。在上图中应该是“4号线”指向newEntry。
newEntry.next.previous = newEntry;
newEntry.next即header,newEntry.next.previous即header的previous指向newEntry实例。在上图中应该是“3号线”指向newEntry。
调整后如下图所示:
图——加入第一个节点后LinkedList示意图
下面分解“添加第二个数据”的步骤:
第一步:新建节点。
图——添加第二个节点
第二步:调整新节点和头结点的前后指针信息。
图——调整前后指针信息
添加后续数据情况和上述一致,LinkedList实例是没有容量限制的。