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

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

王林
王林avant
2023-05-17 08:31:05977parcourir

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() {
    }
}

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

size() méthode

@Override
    public int size() {
        return size;
    }

isEmpty () méthode

 @Override
    public boolean isEmpty() {
        return size == 0;
    }

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;
    }

4 add(Object o)

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

@Override
    public boolean add(Object o) {
        add(size, o);
        return true;
    }

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++;
    }

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer