Vider et Cloner
Fait partie de la section Logique & Flux du Journey Java de Coddy — leçon 27 sur 59.
La méthode clear() supprime tous les éléments d’un HashSet, le laissant vide.
La méthode clone() retourne une copie superficielle du HashSet. (Les éléments eux-mêmes ne sont pas clonés.)
Par exemple, créez d'abord un HashSet :
HashSet<String> set = new HashSet<>();
set.add("Coddy");Pour cloner l'ensemble :
HashSet<String> clonedSet = (HashSet<String>) set.clone();
System.out.println(clonedSet);
// Output: [Coddy]Pour vider l'ensemble :
set.clear();
System.out.println(set.isEmpty());
// Output: truePourquoi avons-nous besoin d'un cast avec clone() ?
Vous avez déjà appris le cast avec les types primitifs (comme int x = (int) 3.14). Le même concept s'applique aux objets, mais pour une raison différente.
La méthode clone() retourne un type Object générique, pas un HashSet<String> spécifique. C'est parce que clone() est définie dans la classe Object et ne sait pas quel type vous clonez.
// Ce que retourne clone() :
Object cloneResult = set.clone(); // Retourne Object, pas HashSet<String>
// Ce dont nous avons besoin :
HashSet<String> clonedSet = (HashSet<String>) set.clone(); // Cast Object → HashSet<String>Le cast dit à Java : « Je sais que cet Object est en réalité un HashSet<String>, alors traite-le comme tel. »
Sans le cast, vous obtiendrez une erreur de compilation car Java ne convertira pas automatiquement Object en HashSet<String>.
Défi
FacileCréez une méthode nommée <strong>processSet</strong> qui prend un HashSet de Strings en entrée. La méthode doit :
- Cloner le set.
- Vider le set original.
- Afficher le set cloné et sa taille au format :
Cloned Set: [elements]Cloned Set Size: X - Afficher le set original (après vidage) et sa taille au format :
Original Set after clear: [elements]Original Set Size: Y
Aide-mémoire
La méthode clear() supprime tous les éléments d'un HashSet :
set.clear();La méthode clone() retourne une copie superficielle du HashSet :
HashSet<String> clonedSet = (HashSet<String>) set.clone();Pourquoi le cast est nécessaire : La méthode clone() retourne un type générique Object, vous devez donc le caster vers HashSet<String> pour l'utiliser comme type spécifique.
Exemple d'utilisation :
HashSet<String> set = new HashSet<>();
set.add("Coddy");
// Clone the set (cast Object → HashSet<String>)
HashSet<String> clonedSet = (HashSet<String>) set.clone();
// Clear original set
set.clear();
System.out.println(set.isEmpty()); // Sortie : true
System.out.println(clonedSet); // Sortie : [Coddy] (clone non affecté)Essayez vous-même
import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@SuppressWarnings("unchecked")
public class Main {
public static void processSet(HashSet<String> set) {
// Écrivez votre code ici
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String setString = scanner.nextLine();
Type setType = new TypeToken<HashSet<String>>(){}.getType();
HashSet<String> set = new Gson().fromJson(setString, setType);
processSet(set);
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DAccès aux éléments des tableaux 2DBoucles imbriquées avec les tableaux 2DRécapitulatif - Tableaux 2DAddition et soustraction de matricesTableaux irréguliersTableaux 3D et au-delàMotifs courants des tableaux 2DRécapitulatif - Tout sur les tableaux4HashSet Partie 1
Qu'est-ce qu'un HashSet ?Ajouter un ÉlémentSupprimer un ÉlémentVérifier si un Élément ExisteVide et TailleVider et ClonerRécapitulatif - HashSet7Gestion des erreurs de base
Bases du try-catchBloc finallyLever des exceptionsExceptions personnalisées2HashMap Partie 1
Qu'est-ce qu'une HashMap ?Déclarer une HashMapAccéder aux ValeursVérifier si une Clé ExisteModifier les DictionnairesRécapitulatif - HashMap3HashMap Partie 2
Méthodes HashMapItérer avec keySet()Itérer avec entrySet()HashMap imbriquéRécapitulatif - Gérer l'entrepôtRécapitulatif - Opérations HashMap6Flux de contrôle avancé
Instructions étiquetéesExpression switchAppariement de motifsClauses de gardeRécapitulatif - Flux de contrôle9Projet - Compteur de Mots Uniques
Entrée de Texte et StockageTraitement des Mots