2015-03-19 104 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(); 
}