English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Base Tutorial

Contrôle de flux Java

Java Array

Java Orienté Objet (I)

Java Orienté Objet (II)

Java Orienté Objet (III)

Java Exception Handling

Java List

Java Queue (file d'attente)

Java Map

Java Set

Java Entrée/Sortie (I/O)

Reader Java/Writer

Autres sujets Java

Java HashSet class

Dans ce tutoriel, nous allons étudier la classe HashSet de Java. Nous allons apprendre différentes méthodes et opérations de l'ensemble de hachage à l'aide d'exemples.

La classe HashSet de la framework de Collections Java fournit les fonctionnalités de la structure de table de hachage.

il implémentel'interface Set.

Créer un ensemble de hachage

Pour créer un ensemble de hachage, nous devons d'abord importer le paquet java.util.HashSet.

Après avoir importé le paquet, vous pouvez créer un ensemble de hachage en Java.

//avec8une capacité et 0.75un ensemble de hachage avec facteur de charge
HashSet<Integer> numbers = new HashSet<>(8, 0.75);

Ici, nous avons créé un ensemble de hachage nommé numbers.

Attention, le nouveau HashSet<>(8, 0.75) ici, le premier paramètre estLa capacité, et le second paramètre estLe facteur de charge.

  • capacity -La capacité de cet ensemble de hachage est8. Cela signifie qu'il peut stocker8éléments.

  • loadFactor - Le facteur de charge de cet ensemble de hachage est de 0.6. Cela signifie que tant que notre ensemble de hachage est rempli60 %, les éléments seront déplacés vers un nouveau tableau de hachage, whose size is twice that of the original table de hachage.

Capacité par défaut et facteur de charge

Il est possible de créer une table de hachage sans définir sa capacité et son facteur de charge. Par exemple,

//HashSet avec capacité par défaut et facteur de charge
HashSet<Integer> numbers1 new HashSet<>();

Par défaut,

  • La capacité du ensemble de hash sera 16

  • Le facteur de charge sera 0.75

Méthodes de HashSet

La classe HashSet fournit diverses méthodes qui nous permettent d'effectuer diverses opérations sur l'ensemble.

Insérer l'élément dans HashSet

  • add() - Insérer l'élément spécifié dans l'ensemble

  • addAll() - Insérer tous les éléments de l'ensemble spécifié dans l'ensemble

Par exemple,

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

Output result

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

Accéder aux éléments HashSet

Pour accéder aux éléments de l'ensemble de hash, nous pouvons utiliser la méthode iterator(). Pour utiliser cette méthode, nous devons importer le paquet java.util.Iterator. Par exemple,

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);
        // Appeler la méthode iterator()
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("Utiliser HashSet avec l'Iterator: ",
        //Accéder aux éléments
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Output result

HashSet: [2, 5, 6]
Utiliser HashSet avec l'Iterator 2, 5, 6,

Supprimer l'élément

  • remove() - Supprimer l'élément spécifié du conjunto

  • removeAll() - Supprimer tous les éléments du conjunto

Par exemple,

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);
        //Utiliser la méthode remove()
        boolean valeur1 = numbers.remove(5);
        System.out.println("Valeur",5Supprimé ? ", + valeur1);
        boolean valeur2 = numbers.removeAll(numbers);
        System.out.println("Tous les éléments ont-ils été supprimés ? ", + valeur2);
    }
}

Output result

HashSet: [2, 5, 6]
Valeur5Supprimé ? true
Tous les éléments ont-ils été supprimés ? true

Méthodes d'opérations de set

Les différentes méthodes de la classe HashSet peuvent également être utilisées pour effectuer diverses opérations de set.

Set集合并集

union d'un ensemble Set

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        Pour effectuer l'intersection entre deux ensembles, nous pouvons utiliser la méthode retainAll(). Par exemple
        HashSet<Integer> evenNumbers = new HashSet<>();2);
        HashSet<Integer> evenNumbers = new HashSet<>();4);
        System.out.println("HashSet1: " + System.out.println("Intersection: ")
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("HashSet2: " + numbers);
        //Pour effectuer l'union entre deux ensembles, nous pouvons utiliser la méthode addAll(). Par exemple
        union d'ensembles
        numbers.addAll(evenNumbers); + numbers);
    }
}

Output result

HashSet1: [2, 4]
HashSet2: [1, 3]
System.out.println("Union est: ")1, 2, 3, 4]

Union est: [

intersection d'un ensemble Set

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);
        Pour effectuer l'intersection entre deux ensembles, nous pouvons utiliser la méthode retainAll(). Par exemple
        HashSet<Integer> evenNumbers = new HashSet<>();2);
        HashSet<Integer> evenNumbers = new HashSet<>();4);
        System.out.println("HashSet2: " + System.out.println("Intersection: ")
        //evenNumbers.add(
        intersection d'un ensemble
        evenNumbers.retainAll(primeNumbers); + System.out.println("Intersection: ")
    }
}

Output result

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

différence d'un ensemble Set

Pour calculer la différence entre deux ensembles, nous pouvons utiliser la méthode removeAll(). Par exemple,

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);
        //HashSet1et HashSet2différence entre deux ensembles
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Différence: ") + primeNumbers);
    }
}

Output result

HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
Différence: [2]

sous-ensemble d'un ensemble Set

Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble, nous pouvons utiliser la méthode containsAll(). Par exemple,

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);
        //vérifiez si primeNumbers est un sous-ensemble de numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("HashSet2It is a HashSet1c'est un sous-ensemble? " + result);
    }
}

Output result

HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
HashSet2It is a HashSet1Is it a subset? true

Other methods of HashSet

MethodDescription
clone()Create a duplicate of HashSet
contains()Search for the specified element in HashSet and return a boolean result
isEmpty()Check if HashSet is empty
size()Return the size of HashSet
clear()Remove all elements from HashSet

Why choose HashSet?

In Java, if we must access elements randomly, we usually use HashSet. This is because the elements in the hash table are accessed using hash codes.

The hashcode is a unique identifier that helps identify the elements in the hash table.

HashSet cannot contain duplicate elements. Therefore, each element of the hash set has a unique hashcode.

Note: HashSet is not synchronized. That is to say, if multiple threads access the hash set at the same time and one thread modifies the hash set, then it must be synchronized externally.