1.在jDK 5開始增加了線程安全的Map接口 ConcurrentMap
2.Hashtable是JDK 5之前唯一線程安全的內置實現。特別說明的是Hashtable的t是小寫的,原因(暫不明確),
ConcurrentHashMap是HashMap的線程安全版本,ConcurrentSkipListMap是TreeMap的線程安全版本。
ConcurrentHashMap和ConcurrentSkipListMap應盡量多的使用。
HashMap的原理:
我們從頭開始設想,要將對象存放在一起,如何設計這個容器。有兩條路可走,一種是采用分格技術,每一個對象存放於一個格子中沒這樣通過對格子的編號就能取到或者遍歷對象;另一種技術就是采用串聯的方式,各個對象串聯起來,這需要各個對象至少帶有下一個對象的索引。顯然第一種就是數組的概念,第二張就是鏈表的概念,所有的容器的實現其實都是基於這兩種方式的,不管是數組還是鏈表,或者二者具有。 HashMap就是采用的數組方式。
有了存取對象的容器后還需要以下兩個條件才能完成Map所需的條件。
1.能夠快速定位元素:Map的需求就是能夠根據一個查詢條件快速得到需要的結果,所以這個過程需要的就是盡可能的快
2.能夠自動擴充容量:顯然對於容器而然,不需要人工的去控制容器的容量是最好的,這樣對於外部使用來說越少知道底部細節越好,不僅使用方便,也越安全。
3.TreeMap和HashMap的區別和共同點
1.實現:TreeMap:SortMap接口,基於紅黑樹,HashMap基於哈希散列表實現。
2.存儲:TreeMap:默認按鍵的升序排序,HashMap是隨機存儲
3.遍歷:TreeMap:Iterator遍歷是排序的,HashMap是隨機的
4.性能損耗:TreeMap插入和刪除
5.鍵值對:TreeMap:鍵、值都不能為null HashMap只允許鍵值都為null
6.效率:TreeMap:效率低 HashMap:效率高。