亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java HashSet 类完全指南:操作、方法与集合论实战

Java HashSet 类

通过简洁示例探索 Java HashSet 类的创建、核心方法与实战集合运算。

HashSet 类属于 Java 集合框架,实现 Set 接口,提供基于哈希表的存储。

Java HashSet 类完全指南:操作、方法与集合论实战

创建 HashSet

先导入 java.util.HashSet:

import java.util.HashSet;

再用指定容量和负载因子创建 HashSet:

HashSet<Integer> numbers = new HashSet<>(8, 0.75); // capacity=8, loadFactor=0.75

参数:

使用默认值也很常见:

HashSet<Integer> numbers1 = new HashSet<>(); // capacity=16, loadFactor=0.75

HashSet 方法

以下为最常用方法:

插入元素

使用 add 和 addAll 示例:

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);
        HashSet<Integer> numbers = new HashSet<>();
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

输出

HashSet: [2, 4, 6]
New HashSet: [2, 4, 5, 6]

访问元素

用 Iterator 遍历:

import java.util.HashSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("HashSet 迭代: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next() + ", ");
        }
    }
}

输出

HashSet: [2, 5, 6]
HashSet 迭代: 2, 5, 6,

移除元素

单个移除与清空:

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        boolean removed = numbers.remove(5);
        System.out.println("5 是否移除? " + removed);
        boolean cleared = numbers.removeAll(numbers);
        System.out.println("所有元素是否移除? " + cleared);
    }
}

输出

HashSet: [2, 5, 6]
5 是否移除? true
所有元素是否移除? true

集合运算

HashSet 的批量方法支持经典集合论运算。

并集

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        numbers.addAll(evenNumbers);
        System.out.println("并集: " + numbers);
    }
}

输出

并集: [1, 2, 3, 4]

交集

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        evenNumbers.retainAll(primeNumbers);
        System.out.println("交集: " + evenNumbers);
    }
}

输出

交集: [2]

差集

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        primeNumbers.add(5);
        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        primeNumbers.removeAll(oddNumbers);
        System.out.println("差集: " + primeNumbers);
    }
}

输出

差集: [2]

子集检查

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        boolean isSubset = numbers.containsAll(primeNumbers);
        System.out.println("primeNumbers 是 numbers 的子集? " + isSubset);
    }
}

输出

primeNumbers 是 numbers 的子集? true

其他方法

方法说明
clone()创建 Set 浅拷贝
contains()检查元素是否存在
isEmpty()空时返回 true
size()Set 元素数量
clear()移除所有元素

完整列表请参阅 官方 Java 文档。

为何使用 HashSet?

需随机访问时,HashSet 凭借哈希表底层提供 O(1) 性能。每个元素的 hashCode() 保证唯一性,防止重复。但 HashSet 非线程安全;并发使用需外部同步。

注意: 因 HashSet 非同步,多线程并发修改会破坏数据结构。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. 掌握 Java 集合算法:排序、打乱、搜索与更多实用操作
  10. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除