Méthode contains() de Java LinkedList

Java LinkedList Java LinkedList


contains()La méthode est, en Java,LinkedListune méthode courante fournie par la classe, utilisée pour vérifier si la liste chaînée contient l’élément spécifié. Cette méthode appartient àjava.util.LinkedListclasse, et hérite dejava.util.AbstractCollectionclass.

Syntaxe de la méthode

public boolean contains(Object o)

Valeur de retour

  • Si la liste chaînée contient l’élément spécifié, elle renvoietrue
  • Si elle ne contient pas l'élément spécifié, elle renvoiefalse

Détails de la méthode

Comment ça marche

contains()La méthode parcourt chaque élément de la liste chaînée et utiliseequals()méthode pour comparer chaque élément avec l'objet cible. Si un élément correspondant est trouvé, elle renvoie immédiatementtrue; si toute la liste chaînée est parcourue sans qu'un élément correspondant soit trouvé, elle renvoiefalse。

Complexité temporelle

PuisqueLinkedListest une liste doublement chaînée,contains()La méthode doit effectuer une recherche séquentielle à partir de la tête de la liste chaînée, donc sa complexité temporelle est O(n), où n est le nombre d'éléments dans la liste chaînée.


Exemples d'utilisation

Utilisation de base

Exemple

import java.util.LinkedList;

public class LinkedListContainsExample {
    public static void main(String[] args) {
        // Créer une LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Ajouter des éléments
        fruits.add("Pomme");
        fruits.add("Banane");
        fruits.add("Orange");
       
        // Vérifier si l'élément existe
        System.out.println("Contient Apple ? " + fruits.contains("Apple"));  // Sortie : true
        System.out.println("Contains Grape? " + fruits.contains("Grape")); // Sortie : false
    }
}

Utilisation d'objets personnalisés

Lorsque vous utilisez des objets personnalisés, vous devez redéfinir correctementequals()méthode, sinoncontains()la méthode peut ne pas fonctionner comme prévu.

Exemple

import java.util.LinkedList;

class Person {
    private String name;
    private int age;
   
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
   
    // Redéfinir la méthode equals
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return vrai;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && name.equals(person.name);
    }
   
    // Redéfinir la méthode hashCode
    @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("Contient Alice? " + people.contains(alice)); // Sortie : true
    }
}

Notes

1. Gestion des valeurs null

LinkedListPermet de contenirnullvaleurs, vous pouvez utilisercontains(null)pour vérifier si la liste chaînée contientnullvaleur.

Exemple

LinkedList<String> list = new LinkedList<>();
list.add(null);
System.out.println(list.contains(null)); // Sortie : true

2. Considérations sur les performances

Puisquecontains()méthode doit parcourir la liste chaînée. Pour les grandes listes chaînées, les appels fréquents à cette méthode peuvent affecter les performances. Si vous devez fréquemment vérifier si un élément existe, vous pouvez envisager d'utiliserHashSetet d'autres structures de données plus adaptées à la recherche.

3. Importance de la méthode equals()

contains()La méthode s'appuie sur laequals()méthode de l'élément pour la comparaison d'objets. Si la classe personnalisée ne redéfinit pas correctementequals()méthode,contains()méthode peut ne pas identifier correctement des objets égaux.


Comparaison avec d'autres méthodes

contains() vs indexOf()

  • contains(): renvoie boolean, vérifie uniquement si l'élément existe
  • indexOf(): renvoie int, renvoie l'index de la première occurrence de l'élément, ou -1 s'il n'existe pas

Exemple

LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("A");

System.out.println(list.contains("A"));  // Sortie : true
System.out.println(list.indexOf("A"));   // Sortie : 0

contains() vs containsAll()

  • contains(): vérifie si un seul élément existe
  • containsAll(): vérifie s'il contient tous les éléments de la collection spécifiée

Exemple

LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");

System.out.println(list.contains("A"));  // Sortie : true

List<String> checkList = Arrays.asList("A", "B");
System.out.println(list.containsAll(checkList)); // Sortie : true

Résumé

LinkedListdecontains()La méthode est un outil simple mais pratique pour vérifier si un élément spécifique existe dans une liste chaînée. Comprendre son fonctionnement et l'utiliser correctement est très important pour écrire des programmes Java efficaces. N'oubliez pas les points suivants :

  1. contains()La méthode utiliseequals()pour comparer des éléments
  2. Pour les objets personnalisés, vous devez correctement redéfinirequals()ethashCode()method
  3. Cette méthode a une complexité temporelle de O(n) et ne convient pas à une utilisation fréquente sur de grandes listes chaînées
  4. Vous pouvez choisir en fonction de besoins spécifiquesindexOf()oucontainsAll()et d'autres méthodes alternatives

En utilisantcontains()méthode de manière appropriée, vous pouvez gérer et manipuler efficacementLinkedListles données qu'elle contient.

Java LinkedList Java LinkedList

Autres extensions