Java LinkedList indexOf()-Methode

Java LinkedList Java LinkedList


indexOf()Die Methode ist in Java,LinkedListeine häufig verwendete Methode, die von der Klasse bereitgestellt wird und dazu dient, die Position des ersten Vorkommens des angegebenen Elements in der verknüpften Liste zu finden. Diese Methode gehört zurjava.util.LinkedListKlasse, und ist abgeleitet von derjava.util.AbstractListclass.

Methodensyntax:

public int indexOf(Object o)

Rückgabewert:

  • Gibt den Index des ersten Vorkommens des angegebenen Elements in der verknüpften Liste zurück (Zählung ab 0)
  • Gibt -1 zurück, wenn die verknüpfte Liste das Element nicht enthält

Parameterbeschreibung

Parameter Type Beschreibung
o Objekt Das in der verknüpften Liste zu suchende Element

Hinweise

  1. Der Parameter kann einen beliebigen Objekttyp haben, einschließlichnull
  2. Bei der Suche wird dieequals()Methode zum Elementvergleich verwendet
  3. Wenn die verknüpfte Liste mehrere identische Elemente enthält, wird nur der Index des ersten übereinstimmenden Elements zurückgegeben

Anwendungsbeispiel

Einfaches Beispiel

Beispiel

import java.util.LinkedList;

public class LinkedListIndexOfExample {
    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("Orange");
        fruits.add("Banana"); // Doppeltes Element
       
        // Elementindex finden
        System.out.println("Index von 'Banana': " + fruits.indexOf("Banana")); // Ausgabe: 1
        System.out.println("Index von 'Grape': " + fruits.indexOf("Grape"));   // Ausgabe: -1
        System.out.println("Index von 'Orange': " + fruits.indexOf("Orange")); // Ausgabe: 2
    }
}

Umgang mit null-Elementen

Beispiel

import java.util.LinkedList;

public class NullIndexOfExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("A");
        list.add(null);
        list.add("B");
       
        System.out.println("Index von null: " + list.indexOf(null)); // Ausgabe: 1
    }
}

Implementierungsprinzip

Zugrunde liegende Implementierung

LinkedListvonindexOf()Die Methode findet das Element, indem sie die Knoten der verknüpften Liste durchläuft:

  1. Beginne mit dem Durchlaufen beim ersten Knoten (Kopfknoten) der verknüpften Liste
  2. Verwende für jeden Knoten dieequals()Methode zum Vergleichen der Elemente
  3. Wenn der erste übereinstimmende Knoten gefunden wird, gib den aktuellen Index zurück
  4. Wenn nach dem Durchlaufen aller Knoten immer noch nichts gefunden wurde, gib -1 zurück

Zeitkomplexität

  • Durchschnittliche Zeitkomplexität: O(n)
  • Zeitkomplexität im schlechtesten Fall: O(n)

WeilLinkedListSie ist auf Basis einer verknüpften Liste implementiert, erfordert eine sequenzielle Suche von Anfang an, und auf sie kann nicht wie auf ein Array wahlfrei zugegriffen werden.


Vergleich mit verwandten Methoden

indexOf() vs lastIndexOf()

Methode Beschreibung Suchrichtung
indexOf() Gibt die Position des ersten Vorkommens des Elements zurück Vom Anfang bis zum Ende
lastIndexOf() Gibt die Position des letzten Vorkommens des Elements zurück Vom Ende bis zum Anfang

indexOf() vs contains()

Methode Rückgabewert Zweck
indexOf() int (Indexposition) Verwenden, wenn Sie die Position des Elements kennen müssen
contains() boolesch Verwenden, wenn Sie nur wissen müssen, ob das Element existiert

Tatsächlich,contains()die Methode ruft intern aufindexOf() >= 0um es zu implementieren.


Praktische Anwendungsszenarien

Szenario 1: Prüfen, ob ein Element existiert

Beispiel

LinkedList<String> usernames = new LinkedList<>();
// ... Benutzername hinzufügen

String input = "admin";
if (usernames.indexOf(input) != -1) {
    System.out.println("Benutzername existiert bereits");
} else {
    System.out.println("Sie können sich registrieren");
}

Szenario 2: Elementposition für nachfolgende Operationen ermitteln

Beispiel

LinkedList<Task> taskList = new LinkedList<>();
// ... Aufgaben hinzufügen

int index = taskList.indexOf(importantTask);
if (index != -1) {
    // Eine neue Aufgabe vor einer wichtigen Aufgabe einfügen
    taskList.add(index, newUrgentTask);
}

Szenario 3: Daten-Deduplizierung

Beispiel

LinkedList<String> listWithDuplicates = new LinkedList<>();
// ... Daten hinzufügen, die Duplikate enthalten können

LinkedList<String> uniqueList = new LinkedList<>();
for (String item : listWithDuplicates) {
    if (uniqueList.indexOf(item) == -1) {
        uniqueList.add(item);
    }
}

Hinweise

  1. Leistungsüberlegungen: Bei häufigen Suchvorgängen,ArrayListvonindexOf()ist normalerweiseLinkedListfaster
  2. Elementvergleich: Stellen Sie sicher, dass die gespeicherten Objekte in derLinkedListkorrekt implementieren dieequals()method
  3. Gleichzeitige Änderung: Wenn die verknüpfte Liste während der Iteration geändert wird, kann sie eine Ausnahme auslösenConcurrentModificationException
  4. Null-Behandlung: Sie können nachnullElementen suchen, aber achten Sie auf dieNullPointerExceptionRisiken

Zusammenfassung

LinkedListvonindexOf()Die Methode ist ein praktisches Suchwerkzeug, das:

  • Einfach und leicht zu bedienen, übergeben Sie einfach das zu suchende Element
  • Gibt den Index des ersten Vorkommens des Elements zurück
  • Gibt -1 zurück, wenn nicht gefunden
  • Anwendbar auf verschiedene Objekttypen, einschließlichnull

Das Verständnis und Beherrschen dieser Methode kann Ihnen helfen, Anforderungen an die Datensuche in verketteten Listen effektiver zu bewältigen.

Java LinkedList Java LinkedList

Andere Erweiterungen