Maison > Java > javaDidacticiel > Comment implémenter une classe LinkedList personnalisée en Java

Comment implémenter une classe LinkedList personnalisée en Java

王林
Libérer: 2023-05-17 08:31:05
avant
1012 Les gens l'ont consulté

1. LinkedList et ArrayList

-- LinkedList ArrayList
Contact sont toutes deux des classes d'implémentation de List, toutes deux sous le package java.util
principe d'implémentation via lié list Manipuler les données Manipuler les données via des tableaux
Quand utiliser Modifier et vérifier Ajouter et supprimer

2. Classe LinkedList personnalisée (liste chaînée unidirectionnelle)

1.

Classe LinkedList et ArrayList La classe est différente, elle ajoute, supprime, modifie et vérifie la liste chaînée grâce au fonctionnement de pointeurs et de nœuds

Étapes pour personnaliser la classe LinkedList

1 Créez une classe de nœuds, dont les attributs sont des nœuds de nœuds. de type Node et données de type Object

2. Créez des constructeurs paramétrés et sans paramètre de la classe de nœud

3 Créez votre propre classe LinkedList pour implémenter l'interface List

4 Créez un nouvel objet nœud dans la classe LinkedList et déclarez. une taille pour représenter les éléments de la collection

5. Implémentez les méthodes size(), get(), isEmpty() (similaire à ArrayList)

6. Écrivez une méthode add() avec un paramètre formel

7. une méthode add() avec deux paramètres formels

8. Créez une classe de test pour tester le code

2 Classe de nœud Node

Il contient deux attributs : node et data

Le type de nœud est Node

. Le type de données est Objet (car il ne peut pas déterminer le type spécifique de données transmis)

Comment implémenter une classe LinkedList personnalisée en Java

package MyLinkedList;

public class Node {
    // 定义数据
    Object data;
    // 定义下一结点
    Node next;

    public Node(Object data, Node next) {
        this.data = data;
        this.next = next;
    }

    public Node() {
    }
}
Copier après la connexion

3, size(), isEmpty(), get(int index)

size() méthode

@Override
    public int size() {
        return size;
    }
Copier après la connexion

isEmpty () méthode

 @Override
    public boolean isEmpty() {
        return size == 0;
    }
Copier après la connexion

get(int index) méthode

 @Override
    public Object get(int index) {
        Node p = node;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }

        return p.data;
    }
Copier après la connexion

4 add(Object o)

insérer les données reçues à la fin

@Override
    public boolean add(Object o) {
        add(size, o);
        return true;
    }
Copier après la connexion

5. 6. test class

loop La raison pour laquelle on commence à partir de 1 : Parce qu'un objet est créé au début dans la classe LinkedList, si vous partez de 0, vous verrez que le résultat imprimé est nul

 @Override
    public void add(int index, Object element) {
        // 找到需要插入的位置的结点
        Node p = node;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        // 创建新结点
        Node node1 = new Node();

        // 将数据存入集合中
        node1.data = element;

        // 让node1的指针指向下一结点
        node1.next = p.next;

        // 确定node1的直接前驱结点
        p.next = node1;

        // 更新size
        size++;
    }
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal