Java LinkedList remove()-Methode

Java LinkedList Java LinkedList


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()           // Entfernt und gibt das erste Element der Liste zurück
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

public E remove()

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

LinkedList<String> list = new LinkedList<>();
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

public E remove(int index)

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

LinkedList<Integer> numbers = new LinkedList<>();
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

public boolean remove(Object o)

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ält
  • false- Wenn die Liste das angegebene Element nicht enthält

Beispiel:

Beispiel

LinkedList<String> fruits = new LinkedList<>();
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:

  1. Entfernen des Kopfelements (remove()oderremove(0)): O(1) Zeitkomplexität
  2. Entfernen des Endelements (remove(size()-1)): O(1) Zeitkomplexität
  3. 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

LinkedList<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3));
for (Integer num : list) {
    if (num == 2) {
        list.remove(num); // Kann ConcurrentModificationException werfen
    }
}

Korrekter Ansatz:

Beispiel

Iterator<Integer> it = list.iterator();
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

LinkedList<String> list = new LinkedList<>();
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

LinkedList<String> queue = new LinkedList<>();
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

LinkedList<Integer> numbers = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5, 6));

// 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's remove() ist bei mittleren Positionen leistungsfähiger
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:

  1. remove()- Entfernt schnell das Kopfelement, geeignet für Warteschlangenoperationen
  2. remove(int index)- Steuert präzise die Position des zu entfernenden Elements
  3. remove(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.

Java LinkedList Java LinkedList

Andere Erweiterungen