初识 List 接口
在学习 List 集合类之前,我们先来通过这张图,看下 List 集合类的接口和类的实现关系:
我们可以看到 ArrayList、Vector、LinkedList 集合类继承了 AbstractList 抽象类,而
AbstractList 实现了 List 接口,同时也继承了 AbstractCollection 抽象类。ArrayList、
Vector、LinkedList 又根据自我定位,分别实现了各自的功能。
ArrayList 和 Vector 使用了数组实现,这两者的实现原理差不多,LinkedList 使用了双向
链表实现。基础铺垫就到这里,接下来,我们就详细地分析下 ArrayList 和 LinkedList 的
源码实现。
ArrayList 是如何实现的?
ArrayList 很常用,先来几道测试题,自检下你对 ArrayList 的了解程度。
问题 1:我们在查看 ArrayList 的实现类源码时,你会发现对象数组 elementData 使用了
transient 修饰,我们知道 transient 关键字修饰该属性,则表示该属性不会被序列化,然
而我们并没有看到文档中说明 ArrayList 不能被序列化,这是为什么?
问题 2:我们在使