Heim >Java >javaLernprogramm >So implementieren Sie eine benutzerdefinierte LinkedList-Klasse in Java

So implementieren Sie eine benutzerdefinierte LinkedList-Klasse in Java

王林
王林nach vorne
2023-05-17 08:31:051006Durchsuche

1. LinkedList und ArrayList

--LinkedListArrayList# 🎜🎜#KontaktImplementierungsprinzipWann zu verwenden it# 🎜🎜#ChanchaHinzufügen und löschen2. Angepasste LinkedList-Klasse (einseitig). verknüpfte Liste)# 🎜🎜#1. Implementierungsideen
sind alle Implementierungsklassen von List, alle unter dem java.util-Paket
Betriebsdaten über verknüpfte Liste Betriebsdaten über Array

Die LinkedList-Klasse unterscheidet sich von der ArrayList-Klasse durch die Operation von Zeigern und Knoten

Anpassungsschritte für die LinkedList-Klasse

1. Erstellen Sie eine Knotenklasse mit den Attributen Knotentyp Knoten und Objekttyp Daten

2. Erstellen eine Knotenklasse mit Parametern und einem Konstruktor ohne Parameter

3 Erstellen Sie Ihre eigene LinkedList-Klasse, um die List-Schnittstelle zu implementieren

4. Erstellen Sie ein neues Knotenobjekt in der LinkedList-Klasse und Deklarieren Sie eine Größe zur Darstellung der Elemente in

5. Implementieren Sie die Methoden size(), get(), isEmpty() (ähnlich wie ArrayList)

6 Formale Parameter add()-Methode

7 Schreiben Sie die add()-Methode mit zwei formalen Parametern

8. Erstellen Sie eine Testklasse, um den Code

#🎜 zu testen 🎜#2. Knotenstruktur Die Punktklasse

hat zwei Attribute: Knoten und Daten

Der Knotentyp ist Knoten

Der Datentyp ist Objekt (da es nicht in der Lage ist, den spezifischen Typ der eingehenden Daten zu bestimmen)

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()method

@Override
    public int size() {
        return size;
    }
So implementieren Sie eine benutzerdefinierte LinkedList-Klasse in JavaisEmpty()method

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

get(int index)method

 @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)

Fügen Sie die empfangenen Daten am Ende ein

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

5, add(int index,Object element)

#🎜🎜 #

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

6, Testklasse

Der Grund, warum die Schleife bei 1 beginnt: Da am Anfang in der LinkedList-Klasse ein Objekt erstellt wird, werden Sie sehen Wenn Sie bei 0 beginnen, ist das gedruckte Ergebnis null

package MyLinkedList;

public class test {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.add("111");
        linkedList.add("222");
        linkedList.add("333");
        linkedList.add("444");
        for (int i = 1; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }
        System.out.println("==================");
        linkedList.add(2,999);
        for (int i = 1; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }

    }
}

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine benutzerdefinierte LinkedList-Klasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen