Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Classe Java HashSet

Classe Java HashSet

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

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

Il implémente l'interface Set.

Créer un HashSet

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

Une fois le package importé, voici comment créer des ensembles de hachage en Java.

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

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

Remarquez, la partie nouvelle HashSet<>(8, 0.75) . Ici, le premier paramètre est la capacité , et le deuxième paramètre est loadFactor .

  • capacité - La capacité de cet ensemble de hachage est de 8. Cela signifie qu'il peut stocker 8 éléments.
  • facteur de charge - Le facteur de charge de cet ensemble de hachage est de 0,6. Cela signifie que, chaque fois que notre jeu de hachage est rempli à 60 %, les éléments sont déplacés vers une nouvelle table de hachage de la taille du double de la table de hachage d'origine.

Capacité et facteur de charge par défaut

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

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

Par défaut,

  • la capacité du jeu de hachage sera de 16
  • le facteur de charge sera de 0,75

Méthodes de HashSet

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

Insérer des éléments dans HashSet

  • add() - insère l'élément spécifié dans l'ensemble
  • addAll() - insère tous les éléments de la collection spécifiée dans l'ensemble

Par exemple,

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);
    }
}

Sortie

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

Accéder aux éléments HashSet

Pour accéder aux éléments d'un hash set, on peut utiliser le iterator() méthode. Pour utiliser cette méthode, nous devons importer le java.util.Iterator forfait. 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);

        // 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(", ");
        }
    }
}

Sortie

HashSet: [2, 5, 6]
HashSet using Iterator: 2, 5, 6,

Supprimer des éléments

  • remove() - supprime l'élément spécifié de l'ensemble
  • removeAll() - supprime tous les éléments de l'ensemble

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);

        // 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);
    }
}

Sortie

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

Définir les opérations

Les différentes méthodes du HashSet La classe peut également être utilisée pour effectuer diverses opérations d'ensemble.

Union d'ensembles

Pour réaliser l'union entre deux ensembles, on peut utiliser le addAll() méthode. Par exemple,

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);
    }
}

Sortie

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

Intersection d'ensembles

Pour effectuer l'intersection entre deux ensembles, on peut utiliser le retainAll() méthode. 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);
        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);
    }
}

Sortie

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

Différence des ensembles

Pour calculer la différence entre les deux ensembles, nous pouvons utiliser le removeAll() méthode. 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);

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

Sortie

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

Sous-ensemble

Pour vérifier si un ensemble est un sous-ensemble d'un autre ensemble ou non, on peut utiliser le containsAll() méthode. 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);

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

Sortie

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

Autres méthodes de HashSet

Méthode Description
clone() Crée une copie du HashSet
contains() Recherche le HashSet pour l'élément spécifié et renvoie un résultat booléen
isEmpty() Vérifie si le HashSet est vide
size() Renvoie la taille du HashSet
clear() Supprime tous les éléments du HashSet

Pour en savoir plus sur les méthodes HashSet, visitez Java HashSet (documentation officielle de Java).

Pourquoi HashSet ?

En Java, HashSet est couramment utilisé si nous devons accéder à des éléments de manière aléatoire. C'est parce que les éléments d'une table de hachage sont accessibles à l'aide de codes de hachage.

Le hashcode d'un élément est une identité unique qui permet d'identifier l'élément dans une table de hachage.

HashSet ne peut pas contenir d'éléments en double. Par conséquent, chaque élément de l'ensemble de hachage a un code de hachage unique.

Remarque : HashSet n'est pas synchronisé. C'est-à-dire si plusieurs threads accèdent au jeu de hachage en même temps et que l'un des threads modifie le jeu de hachage. Ensuite, il doit être synchronisé en externe.


Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Algorithmes Java
  8. Classe Java ObjectOutputStream
  9. Génériques Java