zoukankan      html  css  js  c++  java
  • 数组和集合(三):Set集合的使用总结

    一、概述

    • · 继承collection接口
    • · 无序(不记录添加顺序)、不允许元素重复、只允许存在一个null元素

    二、实现类

    1. HashSet

    • · 底层其实是包装了一个HashMap实现的
    • · 采用HashCode算法来存取集合中的元素,具有比较好的读取和查找性能
    • · 通过equals和HashCode来判断两个元素是否相等
    • · 非线程安全

    2. LinkedHashSet

    • · 继承HashSet,本质是LinkedHashMap实现
    • · 有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序
    • · 非线程安全

    3. TreeSet

    • · 是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理
    • · 相对HashSet来说,TreeSet提供了一些额外的按排序位置访问元素的方法,例如first(), last(), lower(), higher(), subSet(), headSet(), tailSet().
    • · 排序分两种:自然排序(存储元素实现Comparable接口)和定制排序(创建TreeSet时,传递一个自己实现的Comparator对象)

    4. EnumSet

    • · 集合元素必须是枚举类型,否则会抛出异常
    • · EnumSet集合也是有序的,其顺序就是Enum类内元素定义的顺序
    • · EnumSet存取的速度非常快,批量操作的速度也很快

     

    三、遍历Set的两种方法

    1. iterator迭代遍历:

     

    Set<String> set = new HashSet<String>();
    
    Iterator<String> it = set.iterator();
    
    while (it.hasNext()) {
    
      String str = it.next();
    
      System.out.println(str);
    
    }

    2. foreach循环遍历:

    for (String str : set) {
    
          System.out.println(str);
    
    }

     

  • 相关阅读:
    Mac 配置前端基本环境
    sass安装 使用
    SVG
    css规范
    [转载] Solaris命令使用
    solaris 10 基本使用
    dos taskkill 命令
    servicemix-3.2.1 内置的服务引擎和绑定组件
    servicemix-3.2.1 部署异常
    解析XML内容到User对象
  • 原文地址:https://www.cnblogs.com/wslook/p/9385629.html
Copyright © 2011-2022 走看看