Maison Java javaDidacticiel 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

Nov 03, 2023 pm 12:26 PM
Interprétation des documents Java : - linkedlist - indexof() - Analyse des fonctions de la méthode

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;
}
Copier après la connexion

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++;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
Copier après la connexion

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");
        }
    }
}
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Mar 17, 2025 pm 05:35 PM

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Mar 17, 2025 pm 05:44 PM

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Mar 17, 2025 pm 05:43 PM

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Mar 17, 2025 pm 05:46 PM

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.

Mar 17, 2025 pm 05:45 PM

L'article discute de la création et de l'utilisation de bibliothèques Java personnalisées (fichiers JAR) avec un versioning approprié et une gestion des dépendances, à l'aide d'outils comme Maven et Gradle.

See all articles