HashSet:
1.基本概念
-
它继承AbstractSet,实现了Set接口,Cloneable,java.io.Serializable
-
HashSet是一个没有重复元素的集合
- 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and load factor (0.75). */
2.构造方法
无参:底层为HashMap,默认大小为16,加载因子为0.75
public HashSet() { map = new HashMap<>(); }
-
有参:将一个集合元素放入HashSet,底层为HashMap
public HashSet(Collection<? extends E> c) { map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16)); addAll(c); }
-
有参:指定大小和加载因子,底层为HashMap
public HashSet(int initialCapacity, float loadFactor) { map = new HashMap<>(initialCapacity, loadFactor); }
-
有参:指定大小,加载因子为默认值0.75,底层为HashMap
public HashSet(int initialCapacity) { map = new HashMap<>(initialCapacity); }