• 数组和集合(三):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);
    
    }

     

  • 相关阅读:
    zookeeper
    linux命令大全
    多态1
    单例模式
    java this
    java 构造代码块
    java return
    mapreduce实现分组求最大
    数据相关脚本
    mapreduce实现社交中共同好友
  • 原文地址:https://www.cnblogs.com/wslook/p/9385629.html
Copyright © 2020-2023  润新知