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

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

challenge icon

Défi

Facile

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

  1. Cloner l’ensemble.
  2. Effacer l’ensemble d’origine.
  3. Afficher l’ensemble cloné et sa taille au format suivant :
    Cloned Set: [elements]
    Cloned Set Size: X
  4. 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);
    }
}
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