Map小记
Map
- key-value存储容器
HashMap
- Hash表实现的Map
- 允许key和value为null
LinkedHashMap
- Hash表实现,同时保存了插入或者访问顺序
SortedMap
- 有序Map,key会排序
NavigableMap
- 可导航的map,由于是有序的,因此可以实现获取某个key排序前的所有key等类似操作
TreeMap
- 使用红黑树实现的Map
HashTable
- 线程安全的Hash表实现Map,使用this锁,内部优化很少
ConcurrentMap
- 并发安全的Map
ConcurrentHashMap
- 并发安全的hash表实现的Map
- 使用cas和hash槽synchronized保证线程安全
ConcurrentLinkedHashMap❌
- 不存在,因为保持全局顺序必须map级别的锁
ConcurrentNavigableMap
- 并发可导航map,有序map
ConcurrentTreeMap❌
- 不存在,TreeMap是红黑树实现的,只有一个根节点,要实现并发必须加map级别的锁
ConcurrentSkipListMap
- 并发跳表实现Map,有序,通过cas实现无锁
不管key和value能不能为null,也懒得去记,最好都把null包装成null对象,这样所有的map都能一致对外服务