java面试-0216-HashMap和LinkedHashMap、TreeMap、HashTable√、ConcurrentHashMap区别?
LinkedHashMap:
继承 HashMap,维护双向链表,记录插入顺序或访问顺序(accessOrder=true)。
键可为 null,线程不安全,默认容量 16,扩容 2 倍。
TreeMap:
基于红黑树,按键的自然顺序(Comparable)或自定义 Comparator 排序,查询复杂度 O(log n)。
键不可为 null,线程不安全,适合范围查找或有序遍历。
Hashtable:
基于HashMap,线程安全(synchronized 锁整个表)。
键不可为 null,默认容量 11,扩容 2 倍 + 1,锁粒度大,性能较低。
ConcurrentHashMap:
线程安全,JDK 7 用分段锁(Segment),JDK 8 用 CAS + synchronized(锁单桶)。
键不可为 null,基于 Node 数组 + 链表/红黑树(链表超 8 转为红黑树),高并发性能优于Hashtable。