一个不包含重复元素的collection。更确切的讲,set不包含满足e1.equals(e2)的元素,并且最多包含一个null元素。
此接口基本上与Collection方法一致。
Set的应用场景:去重的最多
HashSet:
底层基于HashMap-> 基于了数组+链表结构。默认初始容量是16,默认加载因子是0.75f,默认增加一倍。--- 不保证元素的存储顺序
构造方法部分源码:
private transient HashMap<E,Object> map;
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
}
添加方法源码:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
TreeSet:要求存入的元素对应的类必须实现Comparable的接口,然后利用接口中compareTo方法进行自然排序;如果需要对摸一个TreeSet单独指定排序规则,则需要传入一个Comparator。