# Map 实现
分为 通用 和 专用实现
# 通用实现
- HashMap
- TreeMap
- LinkedHashMap
如果需要排序可以使用:
- SortedMap
- TreeMap
如果想要快速且不关心迭代顺序,使用 HashMap
如果想要性能接近 HashMap 和插入顺序,使用 LinkedHashMap。
对于这种情况,set 与 map 类似。
LinkedHashMap 的 removeEldestEntry 功能,可以用来实现自定义缓存。
如果设置 100个 容量的缓存,put 的时候如果超过了该容量,会把最先进来的元素移除,再把新的加到末尾。该操作在 put 的时候被调用。
大概意思就是这样的。
# 专用实现
- EnumMap
- WeakHashMap
- IdentityHashMap。
WeakHashMap 中的每个键对象间接地存储为一个弱引用的指示对象。因此,不管是在映射内还是在映射之外,只有在垃圾回收器清除某个键的弱引用之后,该键才会自动移除。
# 并发实现
java.util.concurrent 包中包含的 ConcurrentMap 接口,它延伸 Map 与原子 putIfAbsent,remove 和 replace 方法,以及 ConcurrentHashMap 该接口的实现。
ConcurrentMap 是哈希表备份的高性能高并发实现。提供其他原子 putIfAbsent、remove、replace 方法的 Map。 替代 Hashtable