基本概念
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
基本属性
// 底层用HashMap存储数据
private transient HashMap<E,Object> map;
// HashMap的value部分 在map操作时补一下value的位置
private static final Object PRESENT = new Object();
构造函数
// 默认构造器,new 一个HashMap
public HashSet() {
map = new HashMap<>();
}
// 传入集合,HashMap的初始容量为(Math.max((int) (c.size()/.75f) + 1, 16)
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
// 传入初始容量和加载因子
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}
// 传入初始容量
public HashSet(int initialCapacity) {
map = new HashMap<>(initialCapacity);
}
// 传入初始容量和加载因子,以及dummy。dummy被忽略,用于区分其他构造器。
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
总结
hashSet允许空值,不允许重复数据,无序