List
一 ArrayList
debug ArrayList new和add
1 ArrayList维护一个Objecet类型数据elementData
transient Object[] elementData
transient 表示瞬间,短暂的,表示该属性不会被序列化
2 当创建ArralyList对象时,如果使用的是无参构造器,则初始elementData容量为0,
第一次添加,则扩容elementData为10,如需再次扩容,则扩容elementData为1.5倍
3 如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如需要扩容,
则直接扩容elementData为1.5倍
二 Vector
Vector底层也是一个对象数组,protected Object[] elementData
Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized
开发中,需要线程同步安全时,考虑使用Vector
三 LinkedList
1 LinkedList底层维护了一个双向链表
2 LinkedList中维护了两个属性first和last分别指向首节点和尾节点
3 每个节点(Node对象),维护了prev,next,item三个属性,其中通过prev指向前一个,通过next指向后一个节点,最终实现双向链表
4 LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高。
-------------------------------------------------------------------
如何选择ArrayList和LinkedList
1 如果改查操作多,使用ArrayList
2 如果增删操作多,使用LinkedList
3 大部分场景都是查询,所以大部分情况使用ArrayList,实际情况根据业务来选择

浙公网安备 33010602011771号