1. 程式人生 > >java.util.Map包下各個類的特點彙總

java.util.Map包下各個類的特點彙總

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

特點:

執行緒安全,支援多執行緒

有排序