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() renvoie une copie superficielle de HashSet. (Les éléments eux-mêmes ne sont pas clonés.)
Par exemple, commencez par créer 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'une conversion de type avec clone() ?
Vous avez déjà appris la conversion de type 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() renvoie un type générique Object, et non un type spécifique HashSet<String>. Cela s'explique par le fait 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 transtypage indique à Java : « Je sais que cet Object est en réalité un HashSet<String>, alors traite-le comme tel. »
Sans le transtypage, tu obtiendras 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 chaînes en entrée. La méthode doit :
- Cloner l’ensemble.
- Effacer l’ensemble d’origine.
- Afficher l’ensemble cloné et sa taille au format suivant :
Cloned Set: [elements]Cloned Set Size: X - Afficher l’ensemble d’origine (après l’effacement) et sa taille au format suivant :
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