欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、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ù)具體是什么類型)

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)

 @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開始的原因:因?yàn)樵贚inkedList類中最開始就創(chuàng)建了一個(gè)對(duì)象,如果從0開始就會(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類的示例代碼的文章就介紹到這了,更多相關(guān)Java自定義LinkedList類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java通過(guò)賣票理解多線程

    Java通過(guò)賣票理解多線程

    本文主要介紹了一個(gè)多線程賣票的例子,通過(guò)賣票這個(gè)實(shí)例來(lái)介紹多線程的方式,加深理解,需要的朋友可以參考下
    2017-09-09
  • Java利用序列化實(shí)現(xiàn)對(duì)象深度clone的方法

    Java利用序列化實(shí)現(xiàn)對(duì)象深度clone的方法

    這篇文章主要介紹了Java利用序列化實(shí)現(xiàn)對(duì)象深度clone的方法,實(shí)例分析了java序列化及對(duì)象克隆的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Spring Cloud OpenFeign REST服務(wù)客戶端原理及用法解析

    Spring Cloud OpenFeign REST服務(wù)客戶端原理及用法解析

    這篇文章主要介紹了Spring Cloud OpenFeign REST服務(wù)客戶端原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 編寫Java代碼制造一個(gè)內(nèi)存溢出的情況

    編寫Java代碼制造一個(gè)內(nèi)存溢出的情況

    這篇文章主要介紹了編寫Java代碼制造一個(gè)內(nèi)存溢出的情況,或許這種有意制造能夠更好地幫助理解Java中的內(nèi)存溢出情況XD 需要的朋友可以參考下
    2015-07-07
  • Java模擬實(shí)現(xiàn)HashMap算法流程詳解

    Java模擬實(shí)現(xiàn)HashMap算法流程詳解

    在java開發(fā)中,HashMap是最常用、最常見的集合容器類之一,文中通過(guò)示例代碼介紹HashMap為啥要二次Hash,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • java創(chuàng)建線程的兩種方法區(qū)別

    java創(chuàng)建線程的兩種方法區(qū)別

    這篇文章主要為大家區(qū)分了java創(chuàng)建線程的兩種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 詳解Java實(shí)現(xiàn)緩存(LRU,FIFO)

    詳解Java實(shí)現(xiàn)緩存(LRU,FIFO)

    本篇文章主要介紹了詳解Java實(shí)現(xiàn)緩存(LRU,FIFO) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • spring緩存代碼詳解

    spring緩存代碼詳解

    這篇文章主要介紹了spring緩存代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java高并發(fā)下鎖的優(yōu)化詳解

    Java高并發(fā)下鎖的優(yōu)化詳解

    這篇文章主要介紹了Java高并發(fā)下鎖的優(yōu)化詳解,鎖是最常用的同步方法之一,在高并發(fā)的環(huán)境下,激烈的鎖競(jìng)爭(zhēng)會(huì)導(dǎo)致程序的性能下降,下面是一些關(guān)于鎖的使用建議,可以把這種副作用降到最低,需要的朋友可以參考下
    2024-01-01
  • 新手也能看懂的SpringBoot異步編程指南(簡(jiǎn)單易懂)

    新手也能看懂的SpringBoot異步編程指南(簡(jiǎn)單易懂)

    這篇文章主要介紹了新手也能看懂的SpringBoot異步編程指南(簡(jiǎn)單易懂),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論