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 : Guide Complet sur les Opérations, Méthodes et Théorie des Ensembles

Classe Java HashSet

Explorez la classe Java HashSet – sa création, méthodes principales et opérations pratiques sur les ensembles – à travers des exemples concis.

La classe HashSet, partie du framework de collections Java, implémente l'interface Set et offre un stockage basé sur table de hachage.


Création d'un HashSet

Importez d'abord java.util.HashSet :

import java.util.HashSet;

Puis créez un HashSet avec une capacité et un facteur de charge spécifiques :

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

Paramètres :

L'utilisation des défauts est aussi courante :

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

Méthodes de HashSet

Voici les méthodes les plus fréquemment utilisées :


Insertion d'Éléments

Exemple utilisant add et 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("Nouveau HashSet: " + numbers);
    }
}

Sortie

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

Accès aux Éléments

Itérez avec 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 avec Iterator: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next() + ", ");
        }
    }
}

Sortie

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

Suppression d'Éléments

Suppression unique et vidage de l'ensemble :

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 est-il supprimé? " + removed);
        boolean cleared = numbers.removeAll(numbers);
        System.out.println("Tous les éléments sont-ils supprimés? " + cleared);
    }
}

Sortie

HashSet: [2, 5, 6] 5 est-il supprimé? true Tous les éléments sont-ils supprimés? true

Opérations sur les Ensembles

Les méthodes en masse de HashSet supportent les opérations classiques de la théorie des ensembles.

Union

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("L'union est: " + numbers);
    }
}

Sortie

L'union est: [1, 2, 3, 4]

Intersection

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("L'intersection est: " + evenNumbers);
    }
}

Sortie

L'intersection est: [2]

Différence

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("Différence: " + primeNumbers);
    }
}

Sortie

Différence: [2]

Vérification de Sous-ensemble

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 est-il un sous-ensemble de numbers? " + isSubset);
    }
}

Sortie

primeNumbers est-il un sous-ensemble de numbers? true

Méthodes Supplémentaires

MéthodeDescription
clone()Crée une copie superficielle de l'ensemble.
contains()Vérifie si un élément existe.
isEmpty()Retourne true si l'ensemble est vide.
size()Nombre d'éléments dans l'ensemble.
clear()Supprime tous les éléments.

Pour une liste complète, référez-vous à la documentation officielle Java.


Pourquoi Utiliser HashSet?

Quand l'accès aléatoire est requis, HashSet offre une performance O(1) grâce à son appui par table de hachage. Le hashCode() de chaque élément garantit l'unicité, prévenant les doublons. Cependant, HashSet n'est pas thread-safe ; une synchronisation externe est nécessaire pour l'usage concurrent.

Note : Comme HashSet n'est pas synchronisé, plusieurs threads le modifiant simultanément peuvent corrompre la structure de données.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser les algorithmes de collection Java : Tri, mélange et plus
  8. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  9. Maîtriser les génériques Java : Construire du code réutilisable et type-safe