溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java如何實(shí)現(xiàn)自定義LinkedList類

發(fā)布時(shí)間:2022-08-13 09:24:38 來(lái)源:億速云 閱讀:143 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Java如何實(shí)現(xiàn)自定義LinkedList類的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Java如何實(shí)現(xiàn)自定義LinkedList類文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

一、LinkedList和ArrayList

--LinkedListArrayList
聯(lián)系都是List的實(shí)現(xiàn)類,都在java.util包下
實(shí)現(xiàn)原理通過(guò)鏈表操作數(shù)據(jù)通過(guò)數(shù)組操作數(shù)據(jù)
什么時(shí)候使用改查增刪

二、自定義LinkedList類(單向鏈表)

1、實(shí)現(xiàn)思路

LinkedList類跟ArrayList類不同,它通過(guò)指針以及結(jié)點(diǎn)的操作對(duì)鏈表進(jìn)行增刪改查

自定義LinkedList類的步驟

1、創(chuàng)建結(jié)點(diǎn)類,里面屬性為Node類型的node結(jié)點(diǎn)、Object類型的數(shù)據(jù)

2、創(chuàng)建結(jié)點(diǎn)類的有參和無(wú)參構(gòu)造方法

3、創(chuàng)建自己的LinkedList類實(shí)現(xiàn)List接口

4、在LinkedList類中新建一個(gè)結(jié)點(diǎn)對(duì)象以及聲明一個(gè)size用于表示集合中的元素

5、實(shí)現(xiàn)size()、get() 、isEmpty()的方法(與ArrayList類似)

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

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

8、創(chuàng)建測(cè)試類對(duì)代碼進(jìn)行測(cè)試

2、Node結(jié)點(diǎn)類

里面有兩個(gè)屬性:結(jié)點(diǎn)和數(shù)據(jù)

結(jié)點(diǎn)的類型為Node

數(shù)據(jù)的類型為Object(因?yàn)椴荒軌虼_定傳入的數(shù)據(jù)具體是什么類型)

Java如何實(shí)現(xiàn)自定義LinkedList類

package MyLinkedList;

public class Node {
    // 定義數(shù)據(jù)
    Object data;
    // 定義下一結(jié)點(diǎn)
    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)

將接受到的數(shù)據(jù)插入最后即可

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

5、add(int index,Object element)

Java如何實(shí)現(xiàn)自定義LinkedList類

 @Override
    public void add(int index, Object element) {
        // 找到需要插入的位置的結(jié)點(diǎn)
        Node p = node;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        // 創(chuàng)建新結(jié)點(diǎn)
        Node node1 = new Node();

        // 將數(shù)據(jù)存入集合中
        node1.data = element;

        // 讓node1的指針指向下一結(jié)點(diǎn)
        node1.next = p.next;

        // 確定node1的直接前驅(qū)結(jié)點(diǎn)
        p.next = node1;

        // 更新size
        size++;
    }

6、test類

循環(huán)從1開(kāi)始的原因:因?yàn)樵贚inkedList類中最開(kāi)始就創(chuàng)建了一個(gè)對(duì)象,如果從0開(kāi)始就會(huì)看到打印結(jié)果為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));
        }

    }
}

關(guān)于“Java如何實(shí)現(xiàn)自定義LinkedList類”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Java如何實(shí)現(xiàn)自定義LinkedList類”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI