Méthode indexOf() de 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
- Le paramètre peut être de n'importe quel type d'objet, y compris
null - Lors de la recherche, la
equals()méthode est utilisée pour la comparaison des éléments - 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
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
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 :
- Commencer à parcourir à partir du premier nœud (nœud de tête) de la liste chaînée
- Pour chaque nœud, utilisez la
equals()méthode pour comparer les éléments - Lorsque le premier nœud correspondant est trouvé, renvoyez l'indice actuel
- 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
// ... 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
// ... 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
// ... 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
- Considérations relatives aux performances: Pour les opérations de recherche fréquentes,
ArrayListdeindexOf()est généralementLinkedListfaster - Comparaison d'éléments: Assurez-vous que les objets stockés dans la
LinkedListimplémentent correctement leequals()method - Modification concurrente: Si la liste chaînée est modifiée pendant l'itération, elle peut lever
ConcurrentModificationException - gestion de null: Vous pouvez rechercher
nullé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 compris
null
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.
Autres extensions
Java LinkedList