集合历来是面试热点,对于我们来说,如何轻松应对面试官的“步步紧逼”呢?那当然是看源码拉~
作者在此以LinkedList的简单元素添加为例,步步分析如何将一个元素添加至LinkedList的集合中~
源码在手,天下我有!
public class LinkedListAddAnalyze {
public static void main(String[] args) {
List list = new LinkedList();
for (int i = 0; i < 20; i++) {
list.add(i);
}
}
}
结论:
1、LinkedList为双向链表,其实现底层是通过内部维护的Node内部类实现,其Node内部类中包含有三个成员属性,分别为当前元素Object类型的item,以及存储上个Node地址的prev和下个Node地址的next;
2、LinkedList类中存储了Node类型的first对象和Node类型的last对象,即为链表的第一个元素和最后一个元素,通过get等方法取出元素时,通过first和last对象进行遍历;
3、通过LinkedList源码可以看出,双向链表优势长于添加元素,尤其是在头尾添加,但随机读取很慢,因为必须通过Node一个个遍历,而ArrayList内部的数组可以直接通过计算获取对应元素的位置,故如果需要频繁增添,且读取较少,那么可以考虑选用LinkedList
以上为个人总结,若有错误请大佬们指出~~~



