Chargement...

HashSet en Java

Créez un HashSet<String> nommé tags, appelez tags.add("oak");, puis tags.add("pine");, puis tags.add("oak"); encore, et affichez tags.size(). Compilez Bin.java et lancez java Bin. L’écran doit montrer une ligne : 2. Le second oak n’a pas créé de troisième valeur. Des valeurs uniques dans un set, voilà ce que cette page enseigne.

Valeurs uniques, pas de paires clé-et-valeur

Sur la page HashMap vous stockiez une clé pointant vers une valeur avec put et get. Un HashSet stocke les valeurs seules. Chaque valeur apparaît au plus une fois. Si vous faites add du même mot deux fois, le set le garde encore une seule fois. Il n’y a pas de chaîne clé séparée sur le parcours d’enseignement de cette page.
Ouvrez Bin.java. Gardez le nom de classe publique Bin pour qu’il corresponde au nom du fichier. Supprimez les lignes restantes de HashMap, scores.put, scores.get et toute démo Desk. Elles appartiennent à la page map. Supprimez aussi tout reste de ArrayList, Rack, Scanner ou nextLine. Le programme ne doit pas attendre une saisie.
Près du haut, au-dessus de public class Bin, écrivez :
import java.util.HashSet;
Cet import met le type HashSet à portée sous le nom court. Sans lui, javac ne voit pas le nom court HashSet sur cette page. Orthographiez java.util et HashSet avec soin. N’inventez pas import java.util.*; comme exigence ici — un import exact suffit.
Dans main, créez le set :
HashSet<String> tags = new HashSet<String>();
Les chevrons portent String car cette leçon stocke des mots. Le nom tags est celui que vous gardez. L’appel new HashSet<String>() construit un set vide. À cet instant il contient zéro valeur.

Ajoutez oak, pine, oak encore — puis size

Appelez tags.add("oak"); sur sa propre ligne. Puis appelez tags.add("pine");. Puis appelez tags.add("oak"); une troisième fois avec le même mot. Le troisième appel n’agrandit pas le set. Écrivez ensuite :
System.out.println(tags.size());
Imprimez la taille, pas le set entier, pour le premier fichier conservé. Le nombre 2 prouve que le doublon a été ignoré. Enregistrez avant de compiler.

Bin size after duplicate add

java
import java.util.HashSet;

public class Bin {
    public static void main(String[] args) {
        HashSet<String> tags = new HashSet<String>();
        tags.add("oak");
        tags.add("pine");
        tags.add("oak");
        System.out.println(tags.size());
    }
}

Depuis le dossier qui contient Bin.java, lancez javac Bin.java. Quand parenthèses, accolades, chevrons et points-virgules correspondent, javac n’écrit aucune ligne de son cru. Puis lancez java Bin — pas java Bin.java, et pas java HashSet. Laissez la fin .java hors de la commande d’exécution.
Le programme doit imprimer une ligne et s’arrêter : 2. Il ne doit pas vous demander de taper. Si le terminal attend une saisie clavier, un appel nextLine d’un exercice plus ancien reste dans un fichier. Supprimez cet appel et gardez la création, les trois lignes add et System.out.println(tags.size());.
Parcourez l’exécution une fois. Java démarre à Bin.main. L’import a déjà nommé quel HashSet vous visez. La ligne new construit un set vide. Le premier add stocke oak. Le second stocke pine. Le troisième add("oak") trouve oak déjà présent et n’augmente pas le compte. L’impression de size() écrit 2. L’écran montre 2. Rien d’autre ne doit s’imprimer. Si vous voyez 3, vous n’exécutez pas ce fichier HashSet, ou vous avez ajouté un troisième mot différent comme elm. Si vous voyez leaf, une démo HashMap Desk tourne encore — passez à java Bin. Si vous voyez [oak, pine] vous avez imprimé le set entier au lieu de size() ; gardez l’impression de la taille pour ce premier fichier d’enseignement.
Si javac dit qu’il ne trouve pas HashSet, la ligne d’import manque, est mal orthographiée, ou se trouve après public class Bin. Déplacez import java.util.HashSet; au-dessus de la ligne de classe. Si vous écrivez tags.add(oak); sans guillemets, javac traite oak comme un nom manquant. Gardez les guillemets. N’appelez pas put sur un HashSet sur cette page — ce nom appartient à HashMap.

Demander avec contains

Un second fichier Bin vérifie si oak est dans le set après les deux premiers adds.

Bin contains oak

java
import java.util.HashSet;

public class Bin {
    public static void main(String[] args) {
        HashSet<String> tags = new HashSet<String>();
        tags.add("oak");
        tags.add("pine");
        System.out.println(tags.contains("oak"));
    }
}

Compilez et lancez ce second fichier de la même façon. L’écran montre true. L’appel contains("oak") demande si cette valeur siège dans le set. Il renvoie un boolean. Si vous demandez contains("elm") après avoir ajouté seulement oak et pine, l’écran montrerait false — c’est valide, mais le second fichier conservé utilise "oak" pour que l’écran soit true.
N’inventez pas une boucle sur le set comme exigence sur cette page. Une page ultérieure — iterating — parcourt les collections. Restez ici avec add, size et contains.

Côte à côte avec HashMap

Un court tableau garde la différence claire.

📊 HashSet vs HashMap

Piece On this page
store tags.add("oak"); — value only
duplicate second add("oak") does not grow size
read check tags.contains("oak") → true
HashMap leftover put / get — not this page’s path
Le tableau n’est qu’un rappel. Les pièces tapées que vous gardez sont l’import HashSet, la ligne de création, les appels add, size() et contains.

Comparé à HashMap et à ArrayList

Sur la page HashMap, put et get utilisaient une clé. Sur cette page, add et contains utilisent la valeur elle-même. Un fichier Desk restant qui imprime leaf est une autre leçon. Pour cette page gardez HashSet<String> tags et la démo de taille qui imprime 2.
Une ArrayList peut tenir le même mot deux fois. Un HashSet ne grandit pas pour un second add identique de ce mot. Cette unicité est le point de cette leçon. Ne mélangez pas tags.get(0) dans les démos Bin — les sets n’utilisent pas les numéros de case de liste sur cette page.
Quand d’anciens fichiers Desk.java ou Rack.java restent à proximité, laissez-les ou supprimez-les seulement s’ils embrouillent quelle classe vous lancez. Lancez java Bin après avoir compilé le fichier HashSet de cette leçon.

Ce qui reste pour iterating

Cette page ouvre un set de valeurs uniques. La page suivante parcourt les collections avec une boucle. Restez ici avec add, size et contains. N’inventez pas un for-each sur le set comme exigence sur cette page ; l’objectif de la leçon est l’unicité et l’écran 2 de size().

Avant iterating

Vous pouvez importer java.util.HashSet, créer HashSet<String> tags, ajouter oak, pine et oak encore, puis imprimer tags.size() pour voir 2. Un second fichier peut imprimer tags.contains("oak") pour voir true. Compilez Bin.java et lancez java Bin pour chaque démo conservée. Le set a gardé des valeurs uniques. La page suivante est iterating, où vous parcourez les valeurs d’une collection une par une.
Gardez l’import au-dessus de la classe. Gardez le add("oak") en double dans la démo de taille pour que le compte reste 2. Gardez contains pour le contrôle boolean. Ces habitudes sont le point de contrôle de cette page avant d’avancer. Quand size() montre 2 après trois adds avec un oak répété, HashSet a fait son travail pour cette leçon et vous êtes prêt pour le sujet suivant.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut