hushset的实现原理
实现源码
public HashSet() { map = new HashMap<>(); }
这里可以看见当我们new一个hashset时,实际上hashset类又创建了一个hashmap对象map。
public boolean add(E e) { return map.put(e, PRESENT)==null; }
当我们调用add方法时,实际上add(e)对象e作为map的key值,因为map的key不允许重复,所以set集合不允许重复元素,因为hashtable算法实现原理所以set集合也是无序的。
当然add(null)也是允许的。
public HashSet(int initialCapacity) { map = new HashMap<>(initialCapacity); }
当然我们也可以通过有参构造去自定义table的大小。