Java HashSet使用哪种数据结构?
我曾在许多网站上看到hashset使用的内部数据结构是HashTable,但当我看到hashset.class在反编译后使用的是HashMap。现在我很困惑,请澄清我的困惑。hashset使用哪种数据结构 另外,请告诉我linkedhashset、treeset、hashmap、hashtable、linkedhashmap、treemap使用的内部数据结构。HashSet将值作为hashmap键的一部分在内部存储,并将一个伪值作为值 ,有关部分摘录如下:Java HashSet使用哪种数据结构?,java,collections,hashset,Java,Collections,Hashset,我曾在许多网站上看到hashset使用的内部数据结构是HashTable,但当我看到hashset.class在反编译后使用的是HashMap。现在我很困惑,请澄清我的困惑。hashset使用哪种数据结构 另外,请告诉我linkedhashset、treeset、hashmap、hashtable、linkedhashmap、treemap使用的内部数据结构。HashSet将值作为hashmap键的一部分在内部存储,并将一个伪值作为值 ,有关部分摘录如下: // Dummy value to a
// 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;它将回答这些问题中的大部分。@GeorgeNetu:不,我不认为这是一个重复的问题。@Makoto我同意这个问题是正确的,但我的意思是实现方面的问题。。。。。?在大多数情况下,这个问题在每个答案中都被忽略了。。我认为这不是一个合适的复制品,是的,这是正确的,但这几乎不像是一个答案。@Makoto这就是这些问题的问题:|