Maison  >  Article  >  Java  >  Interprétation de la documentation Java : Analyse de la fonction méthode indexOf() de la classe LinkedList

Interprétation de la documentation Java : Analyse de la fonction méthode indexOf() de la classe LinkedList

WBOY
WBOYoriginal
2023-11-03 12:26:111551parcourir

Interprétation de la documentation Java : Analyse de la fonction méthode indexOf() de la classe LinkedList

LinkedList est une classe d'implémentation de liste doublement chaînée dans le cadre de collection Java. Elle peut ajouter ou supprimer dynamiquement des éléments et prend en charge les opérations d'insertion et de suppression à n'importe quel endroit. Dans la classe LinkedList, la méthode indexOf() est une opération couramment utilisée. Elle est utilisée pour trouver la position où un élément spécifié apparaît pour la première fois dans la liste chaînée. Cet article présentera en détail la fonction de cette méthode et comment l'utiliser. .

La syntaxe de la méthode indexOf() de la classe LinkedList est la suivante :

public int indexOf(Object o) {
    int index = 0;
    if (o == null) {
        for (Node<E> x = first; x != null; x = x.next) {
            if (x.item == null) {
                return index;
            }
            index++;
        }
    } else {
        for (Node<E> x = first; x != null; x = x.next) {
            if (o.equals(x.item)) {
                return index;
            }
            index++;
        }
    }
    return -1;
}

Cette méthode reçoit en entrée un paramètre de type Objet o, représentant l'élément à trouver. La méthode renvoie une valeur de type int, indiquant la position où l'élément apparaît pour la première fois dans la liste chaînée (en commençant à 0). Si l'élément n'existe pas dans la liste chaînée, elle renvoie -1.

Afin de mieux comprendre le principe de mise en œuvre de cette méthode, une analyse fonctionnelle détaillée de cette méthode sera réalisée ci-dessous.

  1. Parcourir la liste chaînée

Tout d'abord, afin de trouver la position de l'élément dans la liste chaînée, nous devons parcourir toute la liste chaînée et rechercher un par un en commençant par le premier nœud de la liste chaînée . Par conséquent, cette méthode utilise deux boucles for, et leurs fonctions sont respectivement Il s'agit de parcourir la liste chaînée et de rechercher des éléments. Le code est le suivant :

for (Node<E> x = first; x != null; x = x.next) {
    if (o.equals(x.item)) {
        return index;
    }
    index++;
}

Ce code signifie partir du premier nœud de la liste chaînée et parcourir le. nœuds de la liste chaînée un par un jusqu'à la fin de la liste chaînée (c'est-à-dire lorsque x est nul). Lors de chaque parcours, nous déterminons si l'élément dans le nœud actuel est égal à l'élément à trouver. S'il est égal, renvoyons la position du nœud dans la liste chaînée (c'est-à-dire la variable d'index), sinon passez au parcours suivant.

  1. Déterminer si l'élément existe

Dans le processus de traversée des nœuds, nous devons déterminer si l'élément spécifié existe dans la liste chaînée. Une instruction if est utilisée dans la méthode pour implémenter cette fonction. Le code est le suivant :

if (o.equals(x.item)) {
    return index;
}

Dans cette instruction, o.equals(x.item) signifie déterminer si l'élément représenté par o est égal à l'élément x. élément dans le nœud actuellement bouclé vers lequel ils sont égaux, renvoie la position du nœud dans la liste chaînée (c'est-à-dire la variable d'index), sinon continuez avec le parcours suivant.

Il convient de noter que pour déterminer si un élément existe, si l'élément est nul, item==null doit être utilisé à la place de o.equals(x.item). Par conséquent, cette méthode a également besoin d'une instruction if supplémentaire pour gérer cette situation. Le code est le suivant :

if (x.item == null) {
    return index;
}

x.item==null dans cette instruction signifie que l'élément dans le nœud actuellement bouclé est nul Si l'élément vers. être trouvé est également Si null, renvoie la position du nœud dans la liste chaînée (c'est-à-dire la variable d'index), sinon continuez avec le parcours suivant.

  1. Renvoyer la position de l'élément

Enfin, lorsque l'élément que vous recherchez n'est toujours pas trouvé après avoir parcouru toute la liste chaînée, la méthode retournera -1, indiquant que l'élément n'existe pas dans la liste chaînée. Le code est le suivant :

return -1;

Par conséquent, lors de l'utilisation de cette méthode, nous devons juger si l'élément que nous recherchons existe dans la liste chaînée en fonction de la valeur de retour. Si la valeur de retour est -1, cela signifie que l'élément. n'existe pas, sinon le numéro renvoyé est La position de la première occurrence de cet élément dans la liste chaînée.

Ce qui suit est un exemple de code spécifique pour illustrer l'utilisation de cette méthode :

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        list.add("apple");
        list.add("banana");
        list.add("grape");
        list.add("orange");
        list.add("peach");

        int index = list.indexOf("apple");
        if (index != -1) {
            System.out.println("apple在链表中的位置是:" + index);
        } else {
            System.out.println("链表中不存在apple");
        }

        index = list.indexOf("watermelon");
        if (index != -1) {
            System.out.println("watermelon在链表中的位置是:" + index);
        } else {
            System.out.println("链表中不存在watermelon");
        }
    }
}

Le code crée d'abord une liste d'objets LinkedList et ajoute 5 éléments. Ensuite, il utilise la méthode indexOf() pour trouver les positions des deux éléments « pomme » et « pastèque » dans la liste chaînée, et détermine si les deux éléments existent dans la liste chaînée en fonction de la valeur de retour, et génère enfin le résultat.

En exécutant ce code, nous pouvons obtenir le résultat suivant :

apple在链表中的位置是:0
链表中不存在watermelon

On peut voir que cette méthode est très puissante et peut nous aider à trouver rapidement la position de l'élément spécifié dans la liste chaînée et à implémenter notre propre logique métier. Cependant, lorsque vous utilisez cette méthode, veuillez noter que sa complexité temporelle est O(n), c'est-à-dire qu'à mesure que le nombre d'éléments de liste chaînée augmente, le temps de recherche deviendra de plus en plus long, donc lorsque vous utilisez cette méthode, vous devriez essayer de évitez de parcourir toute la liste chaînée, mais doit être optimisé en fonction de la situation réelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn