java8中HashSet无序集合的简单认识

导读:在java8无序不重复集合,是通过HashSet类实现。今天我们来阅读HashSet这个类,简单分析一下,来进一步的认识它。

类成员

    //借助HashMap实现的.
    private transient HashMap<E,Object> map;

    // 这个就是HashMap中key-value中的value
    private static final Object PRESENT = new Object();

  在HashMap中key是做了重复处理的,保证不会重复,PRESENT这个就是一个value值,作用就是传参占位。

创建对象 new HashMap()

   public HashSet() {
        //HashMap默认长度是16
        map = new HashMap<>();
    }

    //Collection类型数据
    public HashSet(Collection<? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        //一次性的赋值
        addAll(c);
    }

    //定义map的长度,和负载因子
    public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor);
    }

    //定义map的长度
    public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
    }


    //dummy作用:区别不同的构造方法
    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
        //LinkedHashMap是HashMap的派生类
        map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }

添加元素 add()

    //调用map.put方法,保存元素。key值为E类型,value值为PRESENT(Object)
    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

移除元素 remove()

    //调用map.remove方法,保存元素
    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }

最后,这个类的封装是非常简单的,前提是熟悉HashMap类实现,点击这儿可以去认识一下。
点个赞呗 ≧◠◡◠≦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值