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
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 MotsEntraînez-vous par vous-même : Compilateur Java en ligne