Set和Map有親緣關係

Set和Map有親緣關係


此博文僅獻給熟悉集合類的童鞋

如果我們仔細的查看jdk源碼會驚奇的發現這兩個接

口的繼承體系中有很多相似的子接口和實現類

如:

Set中的SortedSet對應Map中的SortedMap

Set中的NavigableSet對應Map中的NavigableMap

Set中的TreeSet對應Map中的TreeMap

Set中的HashSet對應Map中的HashMap

Set中的LinkedHashSet對應Map中的

LinkedeHashMap等等

在編程領域大家都不會相信有什麼巧合吧

的確如此,於是就刨根問底,想要一個膠帶。

熟悉Set和Map的童鞋應該都知道Set是無序的不可重複的集合,Map是個雙列集合,以鍵值對(Key-Value)的形式存儲,對Value沒什麼要求,主要是保證Key的唯一性,而且這個Key也是無序的。

經過這樣一比較,我們就會發現,如果只考慮Map中的Key,那他和Set就沒有什麼區別了,不是嗎?

而且Map集合也提供了Set<K> keySet()方法

來返回key組成的Set集合。這就是爲什麼這兩個接口的繼承體系爲什麼那麼相似的原因。

我們可以設想一下:如果我們把Map中的Value當成Key身體的一部分,只考慮key的存在性,這時候的Map不就可以用Set來存儲了嗎。

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