1.ArrayList
类继承结构:
结构:动态数组
特点:增删慢、查找快、线程不安全
默认初始容量:10
扩容:每次增长原有长度的0.5倍
为什么线程不安全?
2.LinkedList
类继承结构:
结构:双向链表
特点:增删快、查找慢、线程不安全
新增元素:尾插法(多线程下可能引发数据丢失)
为什么线程不安全?
3.Vector
类继承结构:
结构:动态数组
特点:查找快、增删慢、线程安全(相对安全,并非绝对安全)、重量级锁(对会引发线程安全的方法加synchronized关键字)
默认初始容量:10
扩容:可通过设置capacityIncrement的值指定每次增长的长度,若不设置,则每次增长原来的一倍
4.CopyOnWriteArrayList
类继承结构:
结构:数组
特点:适用于读多写少的场景、添加和删除操作是同步的(方法内使用可重入锁),读操作不是同步的。
默认初始容量:0
扩容:每次增加1