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

Java HashSet 类

Java HashSet 类

在本教程中,我们将学习 Java HashSet 类。我们将通过示例了解不同的哈希集方法和操作。

HashSet Java Collections 框架的类提供了哈希表数据结构的功能。

它实现了Set接口。


创建哈希集

为了创建一个哈希集,我们必须导入 java.util.HashSet 先打包。

导入包后,我们可以通过以下方式在 Java 中创建哈希集。

// HashSet with 8 capacity and 0.75 load factor
HashSet<Integer> numbers = new HashSet<>(8, 0.75);

在这里,我们创建了一个名为 numbers 的哈希集 .

注意,新的 HashSet<>(8, 0.75) 部分 .这里,第一个参数是容量 ,第二个参数是loadFactor .

默认容量和负载率

可以在不定义其容量和负载因子的情况下创建哈希表。例如,

// HashSet with default capacity and load factor
HashSet<Integer> numbers1 = new HashSet<>();

默认情况下,


HashSet的方法

HashSet 类提供了各种方法,允许我们对集合执行各种操作。


向HashSet插入元素

例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();

        // Using add() method
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);

        HashSet<Integer> numbers = new HashSet<>();
        
        // Using addAll() method
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

输出

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

访问 HashSet 元素

要访问散列集的元素,我们可以使用 iterator() 方法。为了使用这个方法,我们必须导入 java.util.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);

        // Calling iterator() method
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("HashSet using Iterator: ");
        // Accessing elements
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

输出

HashSet: [2, 5, 6]
HashSet using Iterator: 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);

        // Using remove() method
        boolean value1 = numbers.remove(5);
        System.out.println("Is 5 removed? " + value1);

        boolean value2 = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + value2);
    }
}

输出

HashSet: [2, 5, 6]
Is 5 removed? true
Are all elements removed? true

设置操作

HashSet的各种方法 类也可以用来执行各种集合操作。


集合并集

要执行两个集合之间的并集,我们可以使用 addAll() 方法。例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet1: " + evenNumbers);

        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("HashSet2: " + numbers);

        // Union of two set
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

输出

HashSet1: [2, 4]
HashSet2: [1, 3]
Union is: [1, 2, 3, 4]

集合的交集

要执行两个集合之间的交集,我们可以使用 retainAll() 方法。比如

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet2: " + evenNumbers);

        // Intersection of two sets
        evenNumbers.retainAll(primeNumbers);
        System.out.println("Intersection is: " + evenNumbers);
    }
}

输出

HashSet1: [2, 3]
HashSet2: [2, 4]
Intersection is: [2]

集合的不同

要计算两组之间的差异,我们可以使用 removeAll() 方法。例如,

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);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        System.out.println("HashSet2: " + oddNumbers);

        // Difference between HashSet1 and HashSet2
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference : " + primeNumbers);
    }
}

输出

HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
Difference: [2]

子集

要检查一个集合是否是另一个集合的子集,我们可以使用 containsAll() 方法。例如,

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);
        System.out.println("HashSet1: " + numbers);

        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet2: " + primeNumbers);

        // Check if primeNumbers is a subset of numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("Is HashSet2 is subset of HashSet1? " + result);
    }
}

输出

HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
Is HashSet2 is a subset of HashSet1? true

HashSet的其他方法

方法 说明
clone() 创建 HashSet 的副本
contains() 搜索 HashSet 对于指定元素并返回一个布尔结果
isEmpty() 检查 HashSet 是空的
size() 返回HashSet的大小
clear() HashSet 中移除所有元素

要了解有关 HashSet 方法的更多信息,请访问 Java HashSet(Java 官方文档)。


为什么选择 HashSet?

在 Java 中,HashSet 如果我们必须随机访问元素,则通常使用它。这是因为哈希表中的元素是使用哈希码访问的。

元素的哈希码是一个唯一标识,有助于在哈希表中识别该元素。

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 文件类