首頁 > 軟體

Java實現自定義LinkedList類的範例程式碼

2022-08-12 22:00:40

在正式講解怎麼自定義LinkedList類之前,需要再回顧一下之前學過的一些內容,避免跟ArrayList類混淆。

一、LinkedList和ArrayList

--LinkedListArrayList
聯絡都是List的實現類,都在java.util包下
實現原理通過連結串列運算元據通過陣列運算元據
什麼時候使用改查增刪

二、自定義LinkedList類(單向連結串列)

1、實現思路

LinkedList類跟ArrayList類不同,它通過指標以及結點的操作對連結串列進行增刪改查

自定義LinkedList類的步驟

1、建立結點類,裡面屬性為Node型別的node結點、Object型別的資料

2、建立結點類的有參和無參構造方法

3、建立自己的LinkedList類實現List介面

4、在LinkedList類中新建一個結點物件以及宣告一個size用於表示集合中的元素

5、實現size()、get() 、isEmpty()的方法(與ArrayList類似)

6、編寫一個形參的add()方法

7、編寫兩個形參的add()方法

8、建立測試類對程式碼進行測試

2、Node結點類

裡面有兩個屬性:結點和資料

結點的型別為Node

資料的型別為Object(因為不能夠確定傳入的資料具體是什麼型別)

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()方法

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

isEmpty()方法

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

get(int index)方法

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

將接受到的資料插入最後即可

@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、test類

迴圈從1開始的原因:因為在LinkedList類中最開始就建立了一個物件,如果從0開始就會看到列印結果為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));
        }

    }
}

到此這篇關於Java實現自定義LinkedList類的範例程式碼的文章就介紹到這了,更多相關Java自定義LinkedList類內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com