Menu
Coddy logo textTech

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: true

Pourquoi 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>.

challenge icon

Défi

Facile

Créez une méthode nommée <strong>processSet</strong> qui prend un HashSet de Strings en entrée. La méthode doit :

  1. Cloner le set.
  2. Vider le set original.
  3. Afficher le set cloné et sa taille au format :
    Cloned Set: [elements]
    Cloned Set Size: X
  4. 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);
    }
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Java en ligne