2014-06-21 102 views
-3

我看到哈希集使用的內部數據結構在很多網站上都是HashTable,但當我看到HashSet.class(反編譯後)時,它使用HashMap.Now iam confused請清除我的困惑.HashSet使用哪種數據結構?HashSet使用哪個數據結構?

同時告訴我linkedhashset,treeset,hashmap,hashtable,linkedhashmap,treemap使用的內部數據結構。

+0

去看看源代碼。 –

+4

是的,'HashSet'由'HashMap'支持。 [Javadoc甚至這樣說](http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html)你應該仔細閱讀Javadoc的這些類;它會回答大部分這些問題。 – Makoto

+0

@GeorgeNetu:不,我不認爲這是一個重複的問題。 – Makoto

回答

2

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; 
} 
+0

是的,這是正確的,但它幾乎感覺不到答案。 – Makoto

+0

請解釋downvote –

+0

@Makoto這樣的問題有這樣的問題: – user2864740