一.LinkedList的整体架构:
1.LinkedList是一个环形的双向循环链表,一个节点有向前与向后的指针且head节点不包含任何的数据。
二.LinkedList的构造函数有两种:
1.无参的构造函数:直接建立一个知识包含head头结点的空链表
2.带有Collection[]参数的链表:先调用无参的构造函数去创建链表,然后将数组中的数据添加到链表中
三.LinkedList的查找和删除:
1、在查找和删除某元素时,源码中都划分为该元素为null和不为null两种情况来处理,LinkedList中允许元素为null。
2、注意源码中的Entry<E> entry(int index)方法。该方法返回双向链表中指定位置处的节点,而链表中是没有下标索引的,要指定位置出的元素,就要遍历该链表,从源码的实现中,我们看到这里有一个加速动作。源码中先将index与长度size的一半比较,如果index<size/2,就只从位置0往后遍历到位置index处,而如果index>size/2,就只从位置size往前遍历到位置index处。这样可以减少一部分不必要的遍历,从而提高一定的效率(实际上效率还是很低)
四.LinkedList的扩容:
1.因为LinkedList是基于链表而不是数组实现,有新加入的节点就新new出来一块内存,原理上不存在内存不足的情况
所以没有扩容的情况