• Java中set的实现类


    在Java中,Set是一种用于存储不重复元素的集合接口。Java提供了多个Set的实现类,每个实现类都具有不同的特点和适用场景。以下是一些常见的Java Set实现类:

    • HashSet: HashSet基于哈希表实现,它不保证元素的顺序,但具有快速的插入、删除和查找操作。由于它使用哈希码来存储元素,因此元素不能保证以特定的顺序进行迭代。
    • LinkedHashSet: LinkedHashSet继承自HashSet,它保留了元素插入的顺序,因此迭代时元素的顺序与插入顺序一致。这对于需要按照插入顺序访问元素的情况很有用。
    • TreeSet: TreeSet基于红黑树数据结构实现,它可以保持元素的自然排序顺序(如果元素是可比较的),或者可以使用自定义比较器来指定排序顺序。因此,TreeSet中的元素总是有序的。
    • EnumSet: EnumSet是专门用于枚举类型的Set实现类,它非常高效并且类型安全。
    • CopyOnWriteArraySet: CopyOnWriteArraySet是线程安全的Set实现类,它基于CopyOnWriteArrayList实现,适用于读多写少的情况。
    1. HashSet: HashSet是基于哈希表的Set实现,它使用哈希算法来存储和检索元素,因此插入和查找操作的性能很高。但是,HashSet不保证元素的顺序。

      Set<String> set = new HashSet<>();
      
      • 1

      下面是一个简单的Java HashSet案例,演示如何创建HashSet对象,向其中添加元素,以及如何遍历和删除元素:

      import java.util.HashSet;
      import java.util.Iterator;
      
      public class HashSetExample {
           
          public static void main(String[] args) {
           
              // 创建一个HashSet对象
              HashSet<String> set = new HashSet<>();
      
              // 添加元素到HashSet
              set.add("苹果");
              set.add("香蕉");
              set.add("橙子");
              set.add("葡萄");
              set.add("樱桃");
      
              // 打印HashSet的大小
              System.out.println("HashSet大小:" + set.size());
      
              // 遍历HashSet
              System.out.println("遍历HashSet:");
              Iterator<String> iterator = set.iterator();
              while (iterator.hasNext()) {
           
                  String fruit = iterator.next();
                  System.out.println(fruit);
              }
      
              // 检查HashSet是否包含某个元素
              String searchFruit = "苹果";
              if (set.contains(searchFruit)) {
           
                  System.out.println(searchFruit + " 在HashSet中找到了!");
              }
      
              // 从HashSet中删除一个元素
              String removeFruit = "橙子";
              if (set.remove(removeFruit)) {
           
                  System.out.println(removeFruit + " 已从HashSet中删除。");
              }
      
              // 再次遍历HashSet以查看删除后的情况
              System.out.println("删除元素后的HashSet:");
              iterator = set.iterator();
              while (iterator.hasNext()) {
           
                  String fruit = iterator.next();
                  System.out.println(fruit);
              }
      
              // 清空HashSet
              set.clear();
              System.out.println("清空HashSet后的大小:" + set.size());
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57

      此示例演示了如何创建HashSet,添加、遍历、检查元素是否存在、删除元素以及清空HashSet。HashSet是一个无序的集合,所以遍历元素的顺序不保证与添加的顺序相同。HashSet用于存储不重复的元素,因此添加相同的元素不会导致重复。

    2. LinkedHashSet: LinkedHashSet是HashSet的一个子类,它保持元素插入的顺序。因此,遍历LinkedHashSet时,元素的顺序与插入顺序相同。

      Set<String> set = new LinkedHashSet<>();
      
      • 1

      以下是一个简单的Java LinkedHashSet案例,演示如何创建LinkedHashSet对象,向其中添加元素,以及如何遍历和删除元素:

      import java.util.LinkedHashSet;
      import java.util.Iterator;
      
      public class LinkedHashSetExample {
           
          public static 
      • 1
      • 2
      • 3
      • 4
      • 5
  • 相关阅读:
    什么样的性能测试工具才算是好的工具呢?
    docker容器的网络模式和docker数据卷
    Himall商城字符串帮助类分割、截取字符串
    基于逻辑回归和神经网络识别手写数字(从0到9)(Matlab代码实现)
    使用Tauri开发桌面应用
    电商兴桃,打造乡村振兴新样本
    文件上传与Phar反序列化的摩擦
    【FAQ】统一扫码服务常见问题
    “SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用
    java计算机毕业设计科技专业师生沟通平台源码+数据库+lw文档+系统
  • 原文地址:https://blog.csdn.net/u011095039/article/details/132854300