Java HashSet

Java 集合框架Java Collections Framework

HashSet est implémenté sur la base de HashMap et est une collection qui n'autorise pas les éléments en double.

HashSet autorise les valeurs null.

HashSet n'est pas ordonné, ce qui signifie qu'il ne conserve pas l'ordre d'insertion.

HashSet n'est pas sûr pour les threads. Si plusieurs threads tentent de modifier un HashSet en même temps, le résultat final est incertain. Vous devez synchroniser explicitement l'accès concurrent au HashSet lorsque vous y accédez depuis plusieurs threads.

HashSet implémente l'interface Set.

Les éléments d'un HashSet sont en réalité des objets. Certains types de base courants peuvent utiliser leurs classes enveloppes.

Les classes enveloppes correspondant aux types de base sont les suivantes :

Type de baseType de référence
booléenBoolean
octetByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCaractère

La classe HashSet se trouve dans le package java.util. Vous devez l'importer avant utilisation. Le format de syntaxe est le suivant :

import java.util.HashSet; // 引入 HashSet 类

Dans l'exemple suivant, nous créons un objet HashSet nommé sites pour stocker des éléments de type chaîne :

HashSet<String> sites = new HashSet<String>();

Ajouter des éléments

La classe HashSet fournit de nombreuses méthodes utiles. Vous pouvez utiliser la méthode add() pour ajouter des éléments :

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");  // Les éléments en double ne seront pas ajoutés
        System.out.println(sites);
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

[Google, Example, Zhihu, Taobao]

Dans l'exemple ci-dessus, Example a été ajouté deux fois, mais il n'apparaît qu'une seule fois dans la collection car chaque élément de la collection doit être unique.

Vérifier si un élément existe

Nous pouvons utiliser la méthode contains() pour déterminer si un élément existe dans la collection :

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");  // Les éléments en double ne seront pas ajoutés
        System.out.println(sites.contains("Taobao"));
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

true

Supprimer des éléments

Nous pouvons utiliser la méthode remove() pour supprimer des éléments de la collection :

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Les éléments en double ne seront pas ajoutés
        sites.remove("Taobao");  // Supprimer l'élément ; renvoie true si la suppression réussit, sinon false
        System.out.println(sites);
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

[Google, Example, Zhihu]

Pour supprimer tous les éléments de la collection, vous pouvez utiliser la méthode clear :

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Les éléments en double ne seront pas ajoutés
        sites.clear();  
        System.out.println(sites);
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

[]

Calculer la taille

Pour calculer le nombre d'éléments dans un HashSet, vous pouvez utiliser la méthode size() :

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Les éléments en double ne seront pas ajoutés
        System.out.println(sites.size());  
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

4

Parcourir un HashSet

Vous pouvez utiliser for-each pour parcourir les éléments d'un HashSet.

Exemple

// Importer la classe HashSet
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Les éléments en double ne seront pas ajoutés
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

Exécutez le code ci-dessus ; le résultat de sortie est le suivant :

Google
Example
Zhihu
Taobao

Méthodes courantes de HashSet

Méthode Valeur de retour Description Exemple
add(E e) boolean Ajouter un élément à la collection ; renvoie true en cas de succèstrue; renvoie false pour les éléments en doublefalse。 set.add("Java");
remove(Object o) boolean Supprime l'élément spécifié ; renvoie true en cas de succèstrue; renvoie false si l'élément n'existe pasfalse。 set.remove("Python");
contains(Object o) boolean Vérifie si la collection contient l'élément spécifié. if (set.contains("Java")) { ... }
size() int Renvoie le nombre d'éléments dans la collection. int count = set.size();
isEmpty() boolean Détermine si la collection est vide. if (set.isEmpty()) { ... }
clear() void Efface tous les éléments de la collection. set.clear();
iterator() Iterator<E> Renvoie un itérateur pour la collection afin de parcourir les éléments. for (String s : set) { ... }
toArray() Object[] Convertit la collection en tableau. Object[] arr = set.toArray();
toArray(T[] a) T[] Convertit la collection en un tableau du type spécifié. String[] arr = set.toArray(new String[0]);
addAll(Collection<? extends E> c) boolean Ajoute tous les éléments d'une autre collection (opération d'union). set.addAll(Arrays.asList("A", "B"));
retainAll(Collection<?> c) boolean Conserve uniquement les éléments communs avec la collection spécifiée (opération d'intersection). set.retainAll(otherSet);
removeAll(Collection<?> c) boolean Supprime les éléments communs avec la collection spécifiée (opération de différence). set.removeAll(otherSet);

Pour plus de méthodes API, vous pouvez vous référer à :https://www.example.com/manual/jdk11api/java.base/java/util/HashSet.html

Java 集合框架Java Collections Framework

Autres extensions