集合类主要由Collection和Map两个接口派生出来的
Collection又派生出3个接口,List、Set、Queue
共四大类
List
-
ArrarList
- 可调整大小的数组实现
- 初始容量Math.max(DEFAULT_CAPACITY, minCapacity)最小是10或指定>10的
- 阈值size()
- 扩容 int newCapacity = oldCapacity + (oldCapacity >> 1) 1.5倍
- 有序,可重复
- 线程不安全
- 允许有null
- 查找时间复杂度1,添加、删除n
-
LinkedList
- List 和 Deque 接口的双向链表
- 有序,可重复
- 线程不安全
- 允许有null
- 添加、查找时间复杂度n,删除1
-
CopyOnWriteArrayList
- java.util.ArrayList 的线程安全变体
- 线程安全
- 有序,可重复
- 允许null
- 查找时间复杂度1,添加、删除n
- 适合集合大小通常保持较小的应用程序适,用于都多写少的情况
Set
-
HashSet
- 实现set接口,底层哈希表
- 初始容量Math.max((int) (c.size()/.75f) + 1, 16)
- 阈值size()*0.75
- 两倍扩容