HashSet源码分析

来源:互联网 发布:3年java工资待遇杭州 编辑:程序博客网 时间:2024/05/09 02:42

HashSet底层是HashMap实现的,关于HashMap的分析请移步到HashMap源码分析


属性

private transient HashMap<E,Object> map;private static final Object PRESENT = new Object();


构造方法

    public HashSet() {//底层会初始化一个空的HashMap,并使用默认初始容量为16和加载因子0.75。        map = new HashMap<>();    }    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);    }    HashSet(int initialCapacity, float loadFactor, boolean dummy) {        map = new LinkedHashMap<>(initialCapacity, loadFactor);    }


初始化HashSet时,可以指定初始化容量和负载因子。因为HashSet是由HashMap来实现,如果不指定,则默认值都与HashMap中的一样,即默认初始化容量为16,默认负载因子为0.75。

0 0
原创粉丝点击