Méthode indexOf() de Java LinkedList

Java LinkedList Java LinkedList


indexOf()La méthode est, en Java,LinkedListune méthode couramment utilisée fournie par la classe, utilisée pour trouver la position de la première occurrence de l'élément spécifié dans la liste chaînée. Cette méthode appartient à lajava.util.LinkedListclasse, et est héritée de lajava.util.AbstractListclass.

Syntaxe de la méthode:

public int indexOf(Object o)

Valeur de retour:

  • Retourne l'index de la première occurrence de l'élément spécifié dans la liste chaînée (en comptant à partir de 0)
  • Retourne -1 si la liste chaînée ne contient pas l'élément

Description du paramètre

Paramètre Type Description
o Object L'élément à rechercher dans la liste chaînée

Notes

  1. Le paramètre peut être de n'importe quel type d'objet, y comprisnull
  2. Lors de la recherche, laequals()méthode est utilisée pour la comparaison des éléments
  3. Si la liste chaînée contient plusieurs éléments identiques, seul l'index du premier élément correspondant est retourné

Exemple d'utilisation

Exemple de base

Exemple

import java.util.LinkedList;

public class LinkedListIndexOfExample {
    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");
        fruits.add("Banana"); // Élément en double
       
        // Trouver l'index de l'élément
        System.out.println("Index de 'Banana' : " + fruits.indexOf("Banana")); // Sortie : 1
        System.out.println("Index de 'Grape' : " + fruits.indexOf("Grape"));   // Sortie : -1
        System.out.println("Index de 'Orange' : " + fruits.indexOf("Orange")); // Sortie : 2
    }
}

Gestion des éléments null

Exemple

import java.util.LinkedList;

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 de null : " + list.indexOf(null)); // Sortie : 1
    }
}

Principe d'implémentation

Implémentation sous-jacente

LinkedListdeindexOf()La méthode trouve l'élément en parcourant les nœuds de la liste chaînée :

  1. Commencer à parcourir à partir du premier nœud (nœud de tête) de la liste chaînée
  2. Pour chaque nœud, utilisez laequals()méthode pour comparer les éléments
  3. Lorsque le premier nœud correspondant est trouvé, renvoyez l'indice actuel
  4. Si toujours introuvable après avoir parcouru tous les nœuds, renvoyez -1

Complexité temporelle

  • Complexité temporelle moyenne : O(n)
  • Complexité temporelle dans le pire des cas : O(n)

Parce queLinkedListil est implémenté sur la base d'une liste chaînée, ce qui nécessite une recherche séquentielle depuis le début, et il n'est pas possible d'y accéder aléatoirement comme avec un tableau.


Comparaison avec les méthodes associées

indexOf() vs lastIndexOf()

Méthode Description Sens de recherche
indexOf() Renvoie la position de la première occurrence de l'élément Du début à la fin
lastIndexOf() Renvoie la position de la dernière occurrence de l'élément De la fin au début

indexOf() vs contains()

Méthode Valeur de retour Objectif
indexOf() int (position d'index) À utiliser lorsque vous devez connaître la position de l'élément
contains() booléen À utiliser lorsque vous avez seulement besoin de savoir si l'élément existe

En fait,contains()la méthode appelle en interneindexOf() >= 0pour l'implémenter.


Scénarios d'application pratiques

Scénario 1 : Vérifier si un élément existe

Exemple

LinkedList<String> usernames = new LinkedList<>();
// ... Ajouter un nom d'utilisateur

String input = "admin";
if (usernames.indexOf(input) != -1) {
    System.out.println("Le nom d'utilisateur existe déjà");
} else {
    System.out.println("Vous pouvez vous inscrire");
}

Scénario 2: Obtenir la position de l'élément pour les opérations suivantes

Exemple

LinkedList<Task> taskList = new LinkedList<>();
// ... Ajouter des tâches

int index = taskList.indexOf(importantTask);
if (index != -1) {
    // Insérer une nouvelle tâche avant une tâche importante
    taskList.add(index, newUrgentTask);
}

Scénario 3 : Déduplication des données

Exemple

LinkedList<String> listWithDuplicates = new LinkedList<>();
// ... Ajouter des données pouvant contenir des doublons

LinkedList<String> uniqueList = new LinkedList<>();
for (String item : listWithDuplicates) {
    if (uniqueList.indexOf(item) == -1) {
        uniqueList.add(item);
    }
}

Notes

  1. Considérations relatives aux performances: Pour les opérations de recherche fréquentes,ArrayListdeindexOf()est généralementLinkedListfaster
  2. Comparaison d'éléments: Assurez-vous que les objets stockés dans laLinkedListimplémentent correctement leequals()method
  3. Modification concurrente: Si la liste chaînée est modifiée pendant l'itération, elle peut leverConcurrentModificationException
  4. gestion de null: Vous pouvez recherchernulléléments, mais faites attention auxNullPointerExceptionrisques

Résumé

LinkedListdeindexOf()La méthode est un outil de recherche pratique qui :

  • Simple et facile à utiliser, il suffit de passer l'élément à rechercher
  • Renvoie l'index de la première occurrence de l'élément
  • Renvoie -1 lorsqu'il n'est pas trouvé
  • Applicable à divers types d'objets, y comprisnull

Comprendre et maîtriser cette méthode peut vous aider à répondre plus efficacement aux besoins de recherche de données dans les listes chaînées.

Java LinkedList Java LinkedList

Autres extensions