1. Collection<T>
==元素都是单值==
元素是否有序 | 元素是否可重复 | |
---|---|---|
List<T> | 有序(所有的元素都有索引位置) | 可以 |
Set<T> | 无序(没有索引位置) | 不可以 |
1.1. List<T>
数据结构 | 线程安全 | 效率 | |
---|---|---|---|
ArrayList<T> | 动态数组 | 否 | 查/修改 新增和删除慢 |
LinkedList<T> | 双向链表 | 否 | 新增/删除快 查/修改慢 |
Vector<T> | 动态数组 | 是 | 性能一般 |
CopyonWriteArrayList<T> | 动态数组 | 是 | 性能最慢 |
1.2. Set<T>
数据结构 | 线程安全 | 元素是否可以为null | |
---|---|---|---|
HashSet | HashMap(数组+单向链表+红黑树) | 否 | 可以 |
LinkedHashSet | HashMap | 否 | 可以 |
TreeSet | 红黑树 TreeMap | 否 | 不可以 |
CopyOnWriteArraySet | CopyOnWriteArrayList | 是 Lock | 可以 |
2. Map<K,V>
数据结构 | 线程安全 | key/value是否可以为null | |
---|---|---|---|
HashMap | 位桶+单向链表+红黑树 | 否 | k/v 都可以 |
LinkedHashMap | 位桶+单向链表+红黑树 | 否 | k/v 都可以 |
TreeMap | 红黑树 | 否 | k不可以 v 可以 |
HashTable | hash表 | 是 | k/v 都不可以 |
ConcurrentHashmap | jdk1.7 锁分段技术 segment jdk1.8 CAS | 是 | k/v 都不可以 |
CAS:
compare and swap 比较并交换 乐观锁 认为任何操作都不会出现问题 效率很快 查询的场景
多读少写 -----> Redis 缓存 (主从同步)
synchornized:
同步锁 悲观锁 互斥锁 可重入锁
标签:Map,JAVA,HashMap,可以,链表,---,线程,Collection,红黑树 From: https://www.cnblogs.com/wang1999an/p/16814465.html