Menu
CoddyTech

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 des HashSet zurück. (Die Elemente selbst werden nicht geklont.)

Erstelle zum Beispiel zuerst ein HashSet:

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

Um die Menge zu klonen:

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

Um die Menge zu leeren:

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

Warum benötigen wir beim Aufruf von clone() eine Typumwandlung?

Du hast bereits die Typumwandlung bei primitiven Typen kennengelernt (wie int x = (int) 3.14). Dasselbe Konzept gilt für Objekte, allerdings aus einem anderen Grund.

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

// 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();  // Object in HashSet<String> umwandeln

Der Cast teilt Java mit: „Ich weiß, dass dieses Object eigentlich ein HashSet<String> ist, also behandle es auch so.“

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 processSet, die ein HashSet von Strings als Eingabe übernimmt. Die Methode soll:

  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