Menu
Coddy logo textTech

Leeren und Klonen

Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 27 von 59.

Die Methode clear() entfernt alle Elemente aus einem HashSet und lässt es leer zurück.

Die Methode clone() gibt eine flache Kopie von HashSet zurück. (Die Elemente selbst werden nicht geklont.)

Erstelle zum Beispiel zunächst ein HashSet:

HashSet<String> set = new HashSet<>();
set.add("Coddy");

Um den Set zu klonen:

HashSet<String> clonedSet = (HashSet<String>) set.clone();
System.out.println(clonedSet);
// Output: [Coddy]

Das Set leeren:

set.clear();
System.out.println(set.isEmpty());
// Output: true

Warum benötigen wir eine Typumwandlung mit clone()?

Du hast bereits etwas über Typumwandlungen bei primitiven Typen gelernt (wie int x = (int) 3.14). Dasselbe Konzept gilt auch für Objekte, allerdings aus einem anderen Grund.

Die Methode clone() gibt einen generischen Typ Object zurück, nicht den spezifischen Typ HashSet<String>. Das liegt daran, dass clone() in der Klasse Object definiert ist und nicht weiß, welchen Typ du klonst.

// Was clone() zurückgibt:
Object cloneResult = set.clone();  // Gibt Object zurück, nicht HashSet<String>

// Was wir brauchen:
HashSet<String> clonedSet = (HashSet<String>) set.clone();  // Cast Object → HashSet<String>

Der Cast teilt Java mit: „Ich weiß, dass dieses Object tatsächlich ein HashSet<String> ist, also behandle es als solches.“

Ohne den Cast erhältst du einen Kompilierungsfehler, weil Java Object nicht automatisch in HashSet<String> umwandelt.

challenge icon

Aufgabe

Einfach

Erstelle eine Methode namens <strong>processSet</strong>, die ein HashSet von Strings als Eingabe entgegennimmt. Die Methode sollte:

  1. Die Menge klonen.
  2. Die ursprüngliche Menge leeren.
  3. Die geklonte Menge und ihre Größe im folgenden Format ausgeben:
    Cloned Set: [elements]
    Cloned Set Size: X
  4. Die ursprüngliche Menge (nach dem Leeren) und ihre Größe im folgenden Format ausgeben:
    Original Set after clear: [elements]
    Original Set Size: Y

Probier es selbst

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) {
        // Schreibe deinen Code hier
    }
    
    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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Java-Compiler