Set 具有與 Collection 完全一樣的接口,只是行爲上不同,Set 不保存重複的元素。
HashSet
不允許出現重複元素,不保證集合中元素的順序,允許包含值爲null的元素,但最多隻能一個。
構造方法
private transient HashMap<E,Object> map;
public HashSet() {
map = new HashMap<>();
}
添加方法
private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
LinkedHashSet
繼承 HashSet 具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實現。
構造方法
private transient HashMap<E,Object> map;
LinkedHashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
TreeSet
該類實現了 Set 接口,可以實現排序等功能。
構造方法
private transient NavigableMap<E,Object> m;
public TreeSet() {
this(new TreeMap<E,Object>());
}