Java LinkedList indexOf()-Methode
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
- Der Parameter kann einen beliebigen Objekttyp haben, einschließlich
null - Bei der Suche wird die
equals()Methode zum Elementvergleich verwendet - Wenn die verknüpfte Liste mehrere identische Elemente enthält, wird nur der Index des ersten übereinstimmenden Elements zurückgegeben
Anwendungsbeispiel
Einfaches Beispiel
Beispiel
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
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:
- Beginne mit dem Durchlaufen beim ersten Knoten (Kopfknoten) der verknüpften Liste
- Verwende für jeden Knoten die
equals()Methode zum Vergleichen der Elemente - Wenn der erste übereinstimmende Knoten gefunden wird, gib den aktuellen Index zurück
- 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
// ... 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
// ... 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
// ... 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
- Leistungsüberlegungen: Bei häufigen Suchvorgängen,
ArrayListvonindexOf()ist normalerweiseLinkedListfaster - Elementvergleich: Stellen Sie sicher, dass die gespeicherten Objekte in der
LinkedListkorrekt implementieren dieequals()method - Gleichzeitige Änderung: Wenn die verknüpfte Liste während der Iteration geändert wird, kann sie eine Ausnahme auslösen
ConcurrentModificationException - Null-Behandlung: Sie können nach
nullElementen 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ßlich
null
Das Verständnis und Beherrschen dieser Methode kann Ihnen helfen, Anforderungen an die Datensuche in verketteten Listen effektiver zu bewältigen.
Andere Erweiterungen
Java LinkedList