Java LinkedList remove()-Methode
remove()Die Methode ist eine JavaLinkedListwichtige Methode in der Klasse, die verwendet wird, um Elemente aus der verketteten Liste zu entfernen. LinkedList ist Teil des Java-Collection-Frameworks und implementiert die Schnittstellen List und Deque.
remove()Die Methode hat mehrere verschiedene Formen, jede mit einem bestimmten Zweck:
E remove(int index) // Entfernt das Element an der angegebenen Position
boolean remove(Object o) // Entfernt das erste Vorkommen des angegebenen Elements
Methodendetails
remove() - argumentlose Form
Beispiel
Funktion: Entfernt und gibt das erste Element dieser Liste zurück.
Parameter: Keine
Rückgabewert: Das entfernte Element
Ausnahmen: Löst eine Ausnahme aus, wenn die Liste leer istNoSuchElementException
Beispiel:
Beispiel
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String first = list.remove(); // Entfernt und gibt "Apple" zurück
System.out.println("Entfernt: " + first); // Ausgabe: Entfernt: Apfel
System.out.println(list); // Ausgabe: [Banane, Kirsche]
remove(int index) - Mit Indexparameter
Beispiel
Funktion: Entfernt das Element an der angegebenen Position in der Liste.
Parameters:
index- Der Index des zu entfernenden Elements
Rückgabewert: Das entfernte Element
Ausnahmen:
IndexOutOfBoundsException- Wenn der Index außerhalb des Bereichs liegt (index < 0 || index >= size())
Beispiel:
Beispiel
numbers.add(10);
numbers.add(20);
numbers.add(30);
int removed = numbers.remove(1); // Entfernt das Element an Index 1 (20)
System.out.println("Entfernt: " + removed); // Ausgabe: Entfernt: 20
System.out.println(numbers); // Ausgabe: [10, 30]
remove(Object o) - Mit Objektparameter
Beispiel
Funktion: Entfernt das erste Vorkommen des angegebenen Elements aus der Liste, falls es existiert.
Parameters:
o- Das Element, das aus der Liste entfernt werden soll (falls vorhanden)
Rückgabewert:
true- Wenn die Liste das angegebene Element enthältfalse- Wenn die Liste das angegebene Element nicht enthält
Beispiel:
Beispiel
fruits.add("Apfel");
fruits.add("Banane");
fruits.add("Apfel");
boolean result = fruits.remove("Apple"); // Entfernt den ersten "Apple"
System.out.println("Removed? " + result); // Ausgabe: Removed? true
System.out.println(fruits); // Ausgabe: [Banana, Apple]
Methodenvergleich
| Methodenform | Parametertyp | Rückgabewert | Ausnahmen | Zweck |
|---|---|---|---|---|
remove() |
Keine | E (Elementtyp) | NoSuchElementException | Entfernt und gibt das erste Element zurück |
remove(int index) |
int | E (Elementtyp) | IndexOutOfBoundsException | Entfernt das Element an der angegebenen Position |
remove(Object o) |
Objekt | boolesch | Keine | Entfernt das erste Vorkommen des angegebenen Elements |
Verwendungshinweise
Leistungsüberlegungen
LinkedList-remove()Methodenleistung in verschiedenen Szenarien:
- Entfernen des Kopfelements (
remove()oderremove(0)): O(1) Zeitkomplexität - Entfernen des Endelements (
remove(size()-1)): O(1) Zeitkomplexität - Entfernen eines Elements in der Mitte: O(n) Zeitkomplexität, da bis zur angegebenen Position durchlaufen werden muss
Nebenläufige Modifikation
Beim Iterieren über eine LinkedList mit einem Iterator kann das Aufrufenremove()der Methode Folgendes verursachenConcurrentModificationException. Der korrekte Ansatz ist, die eigeneremove()Methode.
Falsches Beispiel:
Beispiel
for (Integer num : list) {
if (num == 2) {
list.remove(num); // Kann ConcurrentModificationException werfen
}
}
Korrekter Ansatz:
Beispiel
while (it.hasNext()) {
Integer num = it.next();
if (num == 2) {
it.remove(); // Verwende die remove()-Methode des Iterators
}
}
Umgang mit null-Werten
LinkedList ermöglicht das Speichern von null-Werten. Du kannstremove(null)um null-Elemente aus der Liste zu entfernen.
Beispiel
list.add("A");
list.add(null);
list.add("B");
list.remove(null); // Entfernt null-Elemente
System.out.println(list); // Ausgabe: [A, B]
Praktische Anwendungsbeispiele
Implementierung einer Warteschlange
LinkedList-remove()Methode kann verwendet werden, um die FIFO-Eigenschaft (First-In-First-Out) einer Warteschlange zu implementieren:
Beispiel
queue.add("Task1");
queue.add("Task2");
queue.add("Task3");
while (!queue.isEmpty()) {
String task = queue.remove(); // Entfernt und gibt das erste Element zurück
System.out.println("Verarbeitung: " + task);
}
Entfernen von Elementen, die bestimmte Bedingungen erfüllen
Beispiel
// Entfernt alle geraden Zahlen
numbers.removeIf(n -> n % 2 == 0);
System.out.println(numbers); // Ausgabe: [1, 3, 5]
Vergleich mit der remove()-Methode von ArrayList
Beispiel
LinkedList<Integer> linkedList = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));
linkedList.remove(2); // Relativ effizient
// ArrayList's remove() erfordert das Verschieben von Elementen an mittleren Positionen
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
arrayList.remove(2); // Erfordert das Verschieben nachfolgender Elemente
Zusammenfassung
LinkedList-remove()Methode bietet mehrere Formen, um unterschiedliche Entfernungsanforderungen zu erfüllen:
remove()- Entfernt schnell das Kopfelement, geeignet für Warteschlangenoperationenremove(int index)- Steuert präzise die Position des zu entfernenden Elementsremove(Object o)- Entfernt basierend auf dem Elementwert
In praktischen Anwendungen sollten Sie die geeignete Methodenform basierend auf spezifischen Anforderungen auswählen und auf ihre Leistungsmerkmale und Ausnahmen achten. Das Verständnis der Unterschiede und Anwendungsszenarien dieser Methoden hilft Ihnen, LinkedList, eine wichtige Sammlungsklasse, effektiver zu nutzen.
Andere Erweiterungen
Java LinkedList