zoukankan      html  css  js  c++  java
  • Java集合02——三分钟了解你必须掌握的两个Set

    上一篇文章我们说到了 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 的几个实现类,了解一下?

  • 相关阅读:
    ubuntu 搜索文件方法(find命令)
    tomcat ip访问
    Linux下tomcat 的启动 关闭 kill
    Hibernate 之 使用
    tar 用法
    ubuntu下配置django+apache+mysql+mod_python+Python
    Windows Mobile Ping 命令实现(转)
    C#异步方法调用(四大方法详解)
    HTML基础(一):HTML简介
    windows2003系统的iis不能下载exe文件
  • 原文地址:https://www.cnblogs.com/weechang/p/12469073.html
Copyright © 2011-2022 走看看