性能优化——ArrayList与LinkedList的使用优化

初识 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:我们在使

猜你喜欢

转载自blog.csdn.net/qq_36589864/article/details/107985987