最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)自定義LinkedList類的示例代碼

 更新時間:2022年08月12日 16:55:16   作者:糊涂涂是個小盆友  
LinkedList類跟ArrayList類不同,它通過指針以及結(jié)點的操作對鏈表進行增刪改查。本文就來和大家分享下Java如何為實現(xiàn)自定義LinkedList類,需要的可以參考一下

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

一、LinkedList和ArrayList

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

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

1、實現(xiàn)思路

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

自定義LinkedList類的步驟

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

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

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

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

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

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

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

8、創(chuàng)建測試類對代碼進行測試

2、Node結(jié)點類

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

結(jié)點的類型為Node

數(shù)據(jù)的類型為Object(因為不能夠確定傳入的數(shù)據(jù)具體是什么類型)

package MyLinkedList;

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

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

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

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

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

        // 更新size
        size++;
    }

6、test類

循環(huán)從1開始的原因:因為在LinkedList類中最開始就創(chuàng)建了一個對象,如果從0開始就會看到打印結(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實現(xiàn)自定義LinkedList類的示例代碼的文章就介紹到這了,更多相關(guān)Java自定義LinkedList類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

六枝特区| 沈丘县| 喀什市| 曲周县| 鹤峰县| 古丈县| 昌邑市| 景谷| 柳河县| 临泉县| 开阳县| 肃南| 萍乡市| 霍邱县| 贵溪市| 信阳市| 平原县| 阜南县| 马关县| 庆城县| 万山特区| 宁陵县| 蛟河市| 朝阳区| 体育| 乌鲁木齐市| 永胜县| 工布江达县| 金川县| 扬中市| 米泉市| 余干县| 平安县| 宜章县| 剑川县| 将乐县| 武威市| 红桥区| 曲周县| 茂名市| 碌曲县|