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來存儲了嗎。