我看到hashset使用的内部数据结构在许多网站上都是HashTable,但是当我看到HashSet.class(反编译后)它正在使用HashMap.Now我很困惑请清除我的困惑.HashSet使用哪种数据结构?
另请告诉我使用linkedhashset,treeset,hashmap,hashtable,linkedhashmap,treemap使用的内部数据结构。
答案 0 :(得分: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;
}