Menu
Coddy logo textTech

Leeren und Klonen

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

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

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

Zum Beispiel, erstellen Sie zuerst eine 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 brauchen wir Casting mit clone()?

Sie haben bereits über Casting mit primitiven Typen gelernt (wie int x = (int) 3.14). Dasselbe Konzept gilt für Objekte, aber aus einem anderen Grund.

Die clone()-Methode gibt einen generischen Object-Typ zurück, keinen spezifischen HashSet<String>. Dies liegt daran, dass clone() in der Object-Klasse definiert ist und nicht weiß, welchen Typ Sie klonen.

// 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

Erstellen Sie eine Methode namens <strong>processSet</strong>, die einen HashSet von Strings als Eingabe nimmt. Die Methode sollte:

  1. Den Set klonen.
  2. Den ursprünglichen Set leeren.
  3. Den geklonten Set und seine Größe im Format ausgeben:
    Cloned Set: [elements]
    Cloned Set Size: X
  4. Den ursprünglichen Set (nach dem Leeren) und seine Größe im Format ausgeben:
    Original Set after clear: [elements]
    Original Set Size: Y

Spickzettel

Die clear()-Methode entfernt alle Elemente aus einem HashSet:

set.clear();

Die clone()-Methode gibt eine flache Kopie des HashSets zurück:

HashSet<String> clonedSet = (HashSet<String>) set.clone();

Warum Casting benötigt wird: Die clone()-Methode gibt einen generischen Object-Typ zurück, daher müssen Sie ihn zu HashSet<String> casten, um ihn als spezifischen Typ zu verwenden.

Beispielverwendung:

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

// Clone the set (cast Object → HashSet<String>)
HashSet<String> clonedSet = (HashSet<String>) set.clone();

// Clear original set
set.clear();
System.out.println(set.isEmpty()); // Output: true
System.out.println(clonedSet);      // Output: [Coddy] (clone unaffected)

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