Java LinkedList contains()-Methode

Java LinkedList Java LinkedList


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ücktrue
  • Wenn sie das angegebene Element nicht enthält, gibt sie zurückfalse

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

import java.util.LinkedList;

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

import java.util.LinkedList;

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

LinkedList<String> list = new LinkedList<>();
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 existiert
  • indexOf(): gibt int zurück, gibt den Index des ersten Vorkommens des Elements zurück oder -1, wenn es nicht existiert

Beispiel

LinkedList<String> list = new LinkedList<>();
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 existiert
  • containsAll(): prüft, ob es alle Elemente der angegebenen Sammlung enthält

Beispiel

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

  1. contains()Die Methode verwendetequals()um Elemente zu vergleichen
  2. Für benutzerdefinierte Objekte müssen Sie korrekt überschreibenequals()undhashCode()method
  3. 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
  4. Sie können je nach spezifischen Anforderungen auswählenindexOf()odercontainsAll()und andere alternative Methoden

Indem Siecontains()die Methode angemessen einsetzen, können Sie effektiv verwalten und manipulierenLinkedListdie Daten darin.

Java LinkedList Java LinkedList

Andere Erweiterungen