我看到哈希集使用的內部數據結構在很多網站上都是HashTable,但當我看到HashSet.class(反編譯後)時,它使用HashMap.Now iam confused請清除我的困惑.HashSet使用哪種數據結構?HashSet使用哪個數據結構?
同時告訴我linkedhashset,treeset,hashmap,hashtable,linkedhashmap,treemap使用的內部數據結構。
我看到哈希集使用的內部數據結構在很多網站上都是HashTable,但當我看到HashSet.class(反編譯後)時,它使用HashMap.Now iam confused請清除我的困惑.HashSet使用哪種數據結構?HashSet使用哪個數據結構?
同時告訴我linkedhashset,treeset,hashmap,hashtable,linkedhashmap,treemap使用的內部數據結構。
HashSet
內部存儲的值作爲HashMap
的密鑰的一部分,它把一個僞值作爲值
Check the source code,提取相關部分:
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
private transient HashMap<E,Object> map;
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
去看看源代碼。 –
是的,'HashSet'由'HashMap'支持。 [Javadoc甚至這樣說](http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html)你應該仔細閱讀Javadoc的這些類;它會回答大部分這些問題。 – Makoto
@GeorgeNetu:不,我不認爲這是一個重複的問題。 – Makoto