論JAVA集合的實現細節,Map和List的聯繫

表面上我們感覺這倆沒什麼聯繫,實際上是有一些聯繫的。

Map是一個關聯數組,它包含兩組值,key-value.Key組成了一個Set集合,另外一個是values的集合。因爲Map的values完全可以重複。
但是實際上並未返回一個List集合:

HashMap和TreeMap這倆類的values的方法實現完全相同,當第一次調用values方法的時候他們會創建一個values對象。

不管是HashMap還是TreeMap看起來返回的是有value組成的Collection的集合。這個集合應該是一個List集合,因爲value是可以重複的。但是實際上這個values方法更加巧妙。方法返回的是一個不存儲元素的Collection的集合。當程序遍歷集合的溼乎乎實際上遍歷Map對象的value。

HashMap和TreeMap並未把value組合成一個List,這樣就減少了系統內存開銷。

Map和List底層實現上並沒有太大的相似之處,只是在用法上存在一些相似之處:即可以說List是所有Key都是int的Map,也可以說Map是相當於索引是任意類型的List.

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章