Set

Set集合

无序且不能重复的集合,继承Collection 接口, 实现类: HashSet(是一个只有Key的HashMap)

构造函数

    public HashSet() {
        this.map = new HashMap();
    }

    public HashSet(Collection<? extends E> c) {
        this.map = new HashMap(Math.max((int)((float)c.size() / 0.75F) + 1, 16));
        this.addAll(c);
    }

    public HashSet(int initialCapacity, float loadFactor) {
        this.map = new HashMap(initialCapacity, loadFactor);
    }

    public HashSet(int initialCapacity) {
        this.map = new HashMap(initialCapacity);
    }

    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
        this.map = new LinkedHashMap(initialCapacity, loadFactor);
    }

创建HashSet的过程实际在构造方法是调用HashMap的初始化 过程,由于HashMap不允许有重复的key值,所以Set没有重复元素

add方法

public boolean add(E e) {
        return this.map.put(e, PRESENT) == null;
    }

由于HashMapkey是不能重复的,所以每当有重复的值写入到HashSet时, value会被覆盖,但key不会受到影响,这样就保证了HashSet中只能存放不重复的元素。

Last updated