集合架構圖


集合架構圖

集合架構圖,轉載https://www.cnblogs.com/jing99/p/7057245.html

把此圖深印在腦中,面試集合的時候腦中去回想這張圖,事半功倍。

今天重點說一下map,也就是這張圖的右半部分。

Map:

HashMap:

1、在JDK1.8之前,HashMap採用數組+鏈表實現,8以後(包含jdk8)HashMap採用數 組+鏈表+紅黑樹實現.當鏈表長度超過閾值(8)時,將鏈表轉換為紅黑樹。允許使用 null 值和 null 鍵,

2、該集合是不同步的

設置HashMap線程安全:Map m = Collections.synchronizedMap(new HashMap(...));

3、擴容:構造一個空的HashMap,初始容量16,負載因子0.75,當容量超過自身容量百分之75的時候,容量會擴大一倍。

LinkedHashMap:

也是一個HashMap,但是內部維持了一個雙向鏈表,可以保持順序,想保持進入的順序與被取出的順序一致的話,優先考慮

TreeMap:

1、底層是二叉樹數據結構。線程不同步。可以用於給map集合中的鍵進行排序


Collections.synchronizedMap()與ConcurrentHashMap的區別

1、Collections.synchronizedMap()和Hashtable一樣,實現上在調用map所有方法時,都對整個map進行同步,而ConcurrentHashMap的實現卻更加精細,它對map中的所有桶加了鎖。ConcurrentHashMap在性能以及安全性方面,明顯比Collections.synchronizedMap()更加有優勢。同時,同步操作精確控制到桶

2、ConcurrentHashMap從類的命名就能看出,它必然是個HashMap。而Collections.synchronizedMap()可以接收任意Map實例,實現Map的同步

此處轉載:https://blog.csdn.net/lanxiangru/article/details/53495854


分享到:


相關文章: