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的大小。

posted @ 2016-12-15 12:32  冰镇矿泉水  阅读(315)  评论(0编辑  收藏  举报