Java LinkedList clear()-Methode
clear()Die Methode ist eine in Java häufig verwendete MethodeLinkedListvon der Klasse bereitgestellt und wird verwendet, um alle Elemente aus der verketteten Liste zu entfernen. Nach dem Aufruf dieser Methode wird die verkettete Liste zu einer leeren Liste.
Methodensyntax
public void clear()
Methodenbeschreibung
clear()Die Hauptfunktionen der Methode sind:
- Remove
LinkedListalle Elemente in - Setzt die Größe der verketteten Liste auf 0 zurück
- Hat keinen Einfluss auf die Kapazität der verketteten Liste, weil
LinkedListes keine Kapazitätsgrenze gibt
Anwendungsbeispiele
Grundlegende Verwendung
Beispiel
import java.util.LinkedList;
public class ClearExample {
public static void main(String[] args) {
// Erstelle eine LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Elemente hinzufügen
fruits.add("Apfel");
fruits.add("Banane");
fruits.add("Cherry");
System.out.println("Verkettete Liste vor dem Leeren: " + fruits);
System.out.println("Größe vor dem Leeren: " + fruits.size());
// Verwende die clear()-Methode, um die verkettete Liste zu leeren
fruits.clear();
System.out.println("Verkettete Liste nach dem Leeren: " + fruits);
System.out.println("Größe nach dem Leeren: " + fruits.size());
}
}
public class ClearExample {
public static void main(String[] args) {
// Erstelle eine LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Elemente hinzufügen
fruits.add("Apfel");
fruits.add("Banane");
fruits.add("Cherry");
System.out.println("Verkettete Liste vor dem Leeren: " + fruits);
System.out.println("Größe vor dem Leeren: " + fruits.size());
// Verwende die clear()-Methode, um die verkettete Liste zu leeren
fruits.clear();
System.out.println("Verkettete Liste nach dem Leeren: " + fruits);
System.out.println("Größe nach dem Leeren: " + fruits.size());
}
}
Ausgabe:
清空前的链表: [Apple, Banana, Cherry] 清空前的大小: 3 清空后的链表: [] 清空后的大小: 0
Implementierungsprinzip
In JavasLinkedListImplementierungclear()arbeitet die Methode nach den folgenden Schritten:
- Alle Knoten in der verketteten Liste durchlaufen
- Setze die Vorgänger- und Nachfolger-Referenzen jedes Knotens auf null
- Setze den Kopfknoten (den ersten) und den Endknoten (den letzten) der verketteten Liste auf null
- Setze die Größe der verketteten Liste auf 0
Dieser Implementierungsansatz hilft dem Garbage Collector, Knotenobjekte, die nicht mehr verwendet werden, zurückzugewinnen.
Methodeneigenschaften
- Zeitkomplexität: O(n) - erfordert das Durchlaufen aller Knoten
- Speicherkomplexität: O(1) - kein zusätzlicher Speicherplatz erforderlich
- Thread-Sicherheit: Nicht threadsicher, erfordert externe Synchronisierung in einer Multithread-Umgebung
- Rückgabewert: Keiner (void)
Hinweise
- Nach dem Aufruf
clear()der Methode werden alle Elemente in der verketteten Liste entfernt und können nicht wiederhergestellt werden. - Wenn die verkettete Liste von mehreren Referenzen gemeinsam genutzt wird, werden alle Referenzen die Auswirkung sehen, dass die verkettete Liste geleert wurde.
- Nach dem Leeren der verketteten Liste können neue Elemente hinzugefügt werden.
- und
new LinkedList<>()Anders als beim Erstellen einer neuen Instanz,clear()verwendet die Methode das vorhandene Objekt erneut.
Vergleich mit anderen Methoden
| Methode | Funktion | Zeitkomplexität | Ob sie die ursprüngliche verknüpfte Liste modifiziert |
|---|---|---|---|
| clear() | Alle Elemente löschen | O(n) | Ja |
| removeAll() | Alle Elemente in der angegebenen Sammlung entfernen | O(n*m) | Ja |
| new LinkedList<>() | Eine neue leere verknüpfte Liste erstellen | O(1) | nein |
Praktische Anwendungsszenarien
clear()Die Methode ist besonders nützlich in den folgenden Szenarien:
- Wiederverwendung von Objekten verknüpfter Listen: Wenn Sie dasselbe Objekt einer verknüpften Liste wiederverwenden müssen
- Speicherverwaltung: Wenn Sie den von der verknüpften Liste belegten Speicher freigeben müssen
- Status zurücksetzen: Wenn Sie den Status der verknüpften Liste während Algorithmen oder Datenverarbeitung zurücksetzen müssen
Beispiel
// Praktisches Anwendungsbeispiel: Verarbeitung von Batch-Daten
LinkedList<Data> dataBuffer = new LinkedList<>();
// Phase 1: Daten sammeln
collectData(dataBuffer);
// Daten verarbeiten
processData(dataBuffer);
// Den Puffer leeren, um ihn für den nächsten Datenstapel vorzubereiten
dataBuffer.clear();
// Phase 2: Neue Daten sammeln
collectData(dataBuffer);
LinkedList<Data> dataBuffer = new LinkedList<>();
// Phase 1: Daten sammeln
collectData(dataBuffer);
// Daten verarbeiten
processData(dataBuffer);
// Den Puffer leeren, um ihn für den nächsten Datenstapel vorzubereiten
dataBuffer.clear();
// Phase 2: Neue Daten sammeln
collectData(dataBuffer);
Durch die Verwendung derclear()Durch die entsprechende Methode können Sie die Effizienz und Lesbarkeit Ihres Codes verbessern.
Java LinkedList