一、HashSet特性
特性 | 描述 |
---|---|
是否允许为null | 允许 |
是否允许数据重复 | 不允许 |
是否有序 | 无序 |
是否线程安全 | 非线程安全 |
二、HashSet底层实现
HashSet的底层实现是基于HashMap的。构造方法如下:
public HashSet() {
map = new HashMap<>();
}
public HashSet(int initialCapacity) {
map = new HashMap<>(initialCapacity);
}
HashSet添加元素:
private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
由添加方法可以看出HashSet底层使用了HashMap作为存储结构且HashMap的value是一个常量,HashSet的值保存在key中。