集合
-
Collection
- 单列集合
-
Map
- 双列集合(键值对)
-
关系图
-
List子类
- ArrayList
- 底层数据结构是数组。线程不安全
- LinkedList
- 底层数据结构是链表。线程不安全
- Vector
- 底层数据结构是数组。线程安全(大量同步方法) 已被替代
- ArrayList
-
Set子类
- HashSet
- 底层数据结构为HashMap的key
- TressSet
- 底层数据结构是红黑树(是一个自平衡的二叉树)
- 保证元素的排序方式
- LinkedHashSet
- 底层数据结构由哈希表和链表组成。LinkedHashMap
- HashSet
-
Map子类
- HashMap
- 底层结构为数组+链表或红黑树 线程不安全
- 数组部分叫做哈希桶
- 链表长度大于等于8时,转为红黑树储存
- 长度降到6时,转为链表
- LinkedHashMap
- 底层为HashMap和双向链表
- TreeMap
- 底层为红黑树
- key不能为null 要comparator
- HashMap
-
线程安全相关集合类
- Vector或者Collections.synchronizedList(new ArrayList())
- 过时的 只是将方法变成同步方法
- 还是会产生线程不安全的 如果交替多线程使用不同的方法 会报错
- HashTable
- 过时的 只是将方法变成同步方法
- key不能为null 因为要求必须实现hashCode方法和equals方法。
- ConcurrentHashMap
- cas乐观锁+细粒度同步方法
- CopyOnWriteArrayList
- 写的方法内自带锁 读不加锁
- cas乐观锁+自带锁
- Vector或者Collections.synchronizedList(new ArrayList())