美文网首页Java速记手册
Java集合02——三分钟了解你必须掌握的两个Set

Java集合02——三分钟了解你必须掌握的两个Set

作者: Java面典 | 来源:发表于2020-03-05 22:10 被阅读0次

    上一篇文章我们说到了 List ,本章开始,我们将继续讲解Set相关的知识。关注公众号「Java面典」了解更多 Java 知识点。

    Set 是一个无重复对象的集合类。值的重复与否是根据对象的 hashCode 来判断的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。

    HashSet

    • HashSet 是无序 的 Set 对象,由 HashMap 实现的,不保证元素的顺序性
    • HashSet 是非同步的。如果需要使用多线程操作 HashSet ,可以使用Collections.synchronizedSet 方法来“包装” Set。
    Set s = Collections.synchronizedSet(new HashSet(...));
    
    • 带集合构造参数 。
    public HashSet(Collection<? extends E> c) {
        // (int) (c.size()/.75f) + 1 —— HashMap 的加载因子是 0.75
        // -- 当HashMap的“阈值”(阈值=HashMap总的大小*加载因子) < “HashMap实际大小”时,
        // -- HashMap 容量要翻番。
        // 16 —— HashMap的总的大小,必须是2的指数倍
        map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
    }
    

    TreeSet

    • TreeSet 是有序的 Set 对象,通过 TreeMap 实现的,利用二叉树的原理,保证集合内的顺序;
    • String 和 Integer 都可以进行默认的 TreeSet 排序,自定义对象必须实现 Comparable 接口,并且覆写相应的 compareTo()函数,才能进行 TreeSet 排序;
    • TreeSet 是非同步的;
    • TreeSet 为基本操作(add、remove 和 contains)提供受保证的 log(n) 时间开销。

    Java集合系列推荐

    Java集合01——List 的几个实现类,了解一下?

    相关文章

      网友评论

        本文标题:Java集合02——三分钟了解你必须掌握的两个Set

        本文链接:https://www.haomeiwen.com/subject/pjkhqhtx.html