表面上我們感覺這倆沒什麼聯繫,實際上是有一些聯繫的。
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.