java.util.Map包下各個類的特點彙總
阿新 • • 發佈:2019-02-05
java.util.Map包下各類和介面的特點如下圖(包含實現方式,特點,父子關係)
文字版是這樣的:
Map介面
HashTable
實現:基於拉鍊法,初始長度11,載入因子0.75,擴充套件長度2倍+1。
特點:
執行緒安全(全map鎖),支援多執行緒
key和value都不可以是null
支援Iterator(迭代器)和Enumeration(列舉器)兩種方式遍歷
新增元素時使用key的hashCode()
HashMap
實現:基於拉鍊法,初始長度16,載入因子0.75,擴充套件長度2倍。
特點:
非執行緒安全
key和value都可以是null
只支援Iterator(迭代器)遍歷
新增元素時使用自定義的雜湊演算法
LinkedHashMap
實現:基於雙向連結串列
特點:
非執行緒安全
有順序(按照插入順序)
WeakHashMap
特點:
沒有實現Cloneable和Serializable介面
key是弱引用
EnumMap
實現:基於陣列
特點:
key不能是null
建立時需要指定列舉
TreeMap
實現:基於紅黑樹
特點:
有序,按照key的自然順序排序,或者自定義Comparator排序
非同步
ConcurrentHashMap
特點:
執行緒安全,支援多執行緒
沒有排序
把map分成多個段,每段自己有鎖,相當於分成了度個HashTable
put和get操作也基於分段
ConcurrentSkipListMap
實現:基於SkipList
特點:
執行緒安全,支援多執行緒
有排序