Java LinkedList contains()-Methode
contains()Die Methode ist in Java,LinkedListeine gängige, von der Klasse bereitgestellte Methode, mit der geprüft wird, ob die verkettete Liste das angegebene Element enthält. Diese Methode gehört zurjava.util.LinkedListKlasse und erbt vonjava.util.AbstractCollectionclass.
Methodensyntax
public boolean contains(Object o)
Rückgabewert
- Wenn die verkettete Liste das angegebene Element enthält, gibt sie zurück
true - Wenn sie das angegebene Element nicht enthält, gibt sie zurück
false
Methodendetails
Funktionsweise
contains()Die Methode durchläuft jedes Element in der verketteten Liste und verwendetequals()Methode, um jedes Element mit dem Zielobjekt zu vergleichen. Wenn ein übereinstimmendes Element gefunden wird, gibt sie sofort zurücktrue; wenn die gesamte verkettete Liste durchlaufen wird, ohne ein übereinstimmendes Element zu finden, gibt sie zurückfalse。
Zeitkomplexität
DaLinkedListist eine doppelt verkettete Liste,contains()Die Methode muss sequenziell vom Kopf der verketteten Liste aus suchen, daher ist ihre Zeitkomplexität O(n), wobei n die Anzahl der Elemente in der verketteten Liste ist.
Anwendungsbeispiele
Grundlegende Verwendung
Beispiel
public class LinkedListContainsExample {
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");
// Prüfen, ob Element existiert
System.out.println("Contains Apple? " + fruits.contains("Apple")); // Ausgabe: true
System.out.println("Contains Grape? " + fruits.contains("Grape")); // Ausgabe: false
}
}
Benutzerdefinierte Objekte verwenden
Wenn Sie benutzerdefinierte Objekte verwenden, müssen Sie korrekt überschreibenequals()Methode, andernfallscontains()Methode funktioniert möglicherweise nicht wie erwartet.
Beispiel
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// equals-Methode überschreiben
@Override
public boolean equals(Object obj) {
if (this == obj) return wahr;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
// hashCode-Methode überschreiben
@Override
public int hashCode() {
return 31 * name.hashCode() + age;
}
}
public class CustomObjectExample {
public static void main(String[] args) {
LinkedList<Person> people = new LinkedList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
Person alice = new Person("Alice", 25);
System.out.println("Enthält Alice? " + people.contains(alice)); // Ausgabe: true
}
}
Hinweise
1. Umgang mit null-Werten
LinkedListErmöglicht das Enthalten vonnullWerte können Sie verwendencontains(null)um zu prüfen, ob die verkettete Liste enthältnullWert.
Beispiel
list.add(null);
System.out.println(list.contains(null)); // Ausgabe: true
2. Leistungsüberlegungen
Dacontains()Methode muss die verkettete Liste durchlaufen. Bei großen verketteten Listen können häufige Aufrufe dieser Methode die Leistung beeinträchtigen. Wenn Sie häufig prüfen müssen, ob ein Element existiert, können Sie erwägen,HashSetund andere Datenstrukturen zu verwenden, die besser zum Suchen geeignet sind.
3. Bedeutung der equals()-Methode
contains()Die Methode ist auf dieequals()Methode des Elements für den Objektvergleich angewiesen. Wenn die benutzerdefinierte Klasse nicht korrekt überschreibtequals()Methode,contains()Methode erkennt gleiche Objekte möglicherweise nicht korrekt.
Vergleich mit anderen Methoden
contains() vs indexOf()
contains(): gibt boolean zurück, prüft nur, ob das Element existiertindexOf(): gibt int zurück, gibt den Index des ersten Vorkommens des Elements zurück oder -1, wenn es nicht existiert
Beispiel
list.add("A");
list.add("B");
list.add("A");
System.out.println(list.contains("A")); // Ausgabe: true
System.out.println(list.indexOf("A")); // Ausgabe: 0
contains() vs containsAll()
contains(): prüft, ob ein einzelnes Element existiertcontainsAll(): prüft, ob es alle Elemente der angegebenen Sammlung enthält
Beispiel
list.add("A");
list.add("B");
list.add("C");
System.out.println(list.contains("A")); // Ausgabe: true
List<String> checkList = Arrays.asList("A", "B");
System.out.println(list.containsAll(checkList)); // Ausgabe: true
Zusammenfassung
LinkedListvoncontains()Die Methode ist ein einfaches, aber praktisches Werkzeug, um zu prüfen, ob ein bestimmtes Element in einer verknüpften Liste vorhanden ist. Zu verstehen, wie sie funktioniert, und sie korrekt zu verwenden, ist sehr wichtig für das Schreiben effizienter Java-Programme. Beachten Sie die folgenden Punkte:
contains()Die Methode verwendetequals()um Elemente zu vergleichen- Für benutzerdefinierte Objekte müssen Sie korrekt überschreiben
equals()undhashCode()method - Diese Methode hat eine Zeitkomplexität von O(n) und ist nicht für die häufige Verwendung bei großen verknüpften Listen geeignet
- Sie können je nach spezifischen Anforderungen auswählen
indexOf()odercontainsAll()und andere alternative Methoden
Indem Siecontains()die Methode angemessen einsetzen, können Sie effektiv verwalten und manipulierenLinkedListdie Daten darin.
Java LinkedList