Méthode contains() de 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 renvoie
true - Si elle ne contient pas l'élément spécifié, elle renvoie
false
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
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
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
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 existeindexOf(): renvoie int, renvoie l'index de la première occurrence de l'élément, ou -1 s'il n'existe pas
Exemple
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 existecontainsAll(): vérifie s'il contient tous les éléments de la collection spécifiée
Exemple
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 :
contains()La méthode utiliseequals()pour comparer des éléments- Pour les objets personnalisés, vous devez correctement redéfinir
equals()ethashCode()method - 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
- Vous pouvez choisir en fonction de besoins spécifiques
indexOf()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