1.ArrayList

类继承结构:

Java集合框架之List家族_线程安全

结构:动态数组

特点:增删慢、查找快、线程不安全

默认初始容量:10

扩容:每次增长原有长度的0.5倍

为什么线程不安全?

Java集合框架之List家族_线程安全_02

2.LinkedList

类继承结构:

Java集合框架之List家族_线程安全_03

结构:双向链表

特点:增删快、查找慢、线程不安全

新增元素:尾插法(多线程下可能引发数据丢失)

为什么线程不安全?

Java集合框架之List家族_线程安全_04

3.Vector

类继承结构:

Java集合框架之List家族_线程安全_05

结构:动态数组

特点:查找快、增删慢、线程安全(相对安全,并非绝对安全)、重量级锁(对会引发线程安全的方法加synchronized关键字)

默认初始容量:10

扩容:可通过设置capacityIncrement的值指定每次增长的长度,若不设置,则每次增长原来的一倍

4.CopyOnWriteArrayList

类继承结构:

Java集合框架之List家族_类继承_06

结构:数组

特点:适用于读多写少的场景、添加和删除操作是同步的(方法内使用可重入锁),读操作不是同步的。

默认初始容量:0

扩容:每次增加1