jdk1.8 hashset源码

HashSet的数据结构

1
2
3
public class <E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private transient HashMap<E,Object> map;

public () {
map = new HashMap<>();
}

public (Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}

public (int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}

public (int initialCapacity) {
map = new HashMap<>(initialCapacity);
}

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}

public boolean contains(Object o) {
return map.containsKey(o);
}

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