2015-03-19 101 views

回答

5

设置内部实现一个map.So集合中的每个值只是map中的一个键值,所以它的唯一性保持不变。

Here是链接。所以你清楚了解如何设置内部工作。 也很少有堆栈答案。 FirstSecond

2

基本上,一个Set只是一个只包含键的Map。所以你应该告诉你自己关于映射算法。注意:例如HashSet实际上只是HashMap的一个适配器。 HashSet的add-method只使用HashMap.put(value,SomeDummyValue)。

1

下面是一个代码段以上解释解答了

public HashSet() { map = new HashMap<>(); } 
private transient HashMap<E,Object> map; 

// Dummy value to associate with an Object in the backing Map 
private static final Object PRESENT = new Object(); 

public boolean add(E e) { 
    return map.put(e, PRESENT)==null; 
} 

// Since PRESENT is a constant, for all keys we have same value in backup HashMap called map. 

public Iterator<E> iterator() { 
    return map.keySet().iterator(); 
}