溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LinkedList子類的作用是什么

發布時間:2021-08-06 15:09:41 來源:億速云 閱讀:186 作者:Leah 欄目:編程語言

本篇文章為大家展示了LinkedList子類的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

LinkedList子類

在List接口中還有一個比較常用的子類:LinkedList,這個類通過名稱就可以發現其特點:基于鏈表的實現。那么首先觀察一下LinkedList的定義:

public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable

LinkedList子類的作用是什么LinkedList類的繼承關系

范例:使用LinkedList實現集合操作

import java.util.LinkedList;import java.util.List;public class JavaAPIDemo {public static void main(String[] args) throws Exception {
        List<String> all = new LinkedList<String>();all.add("Hello");all.add("Hello");all.add("Wolrd");all.add("MLDN");all.forEach(System.out::println);   //Hello Hello World MLDN
    }
}

如果現在只是觀察程序的功能會發現和ArrayList使用是完全一樣的,但是其內部實現機制是完全不同的,首先觀察LinkedList構造方法里面并沒有提供像ArrayList那樣的初始化大小的方法,而只是提供了無參構造處理:“public LinkedList()”。隨后觀察add()方法的具體實現。

public boolean add(E e) {
    linkLast(e);return true;
}

在之前編寫自定義鏈表時,是判斷了傳入數據是否為null,如果為null則不進行保存,但在LinkedList中并沒有做這樣的處理,而是所有的數據都可以保存,而后此方法調用了linkLast()方法(在最后一個節點后追加)。

void linkLast(E e) {
    final Node<E> l = last;
    final Node<E> newNode = new Node<>(l, e, null);
    last = newNode;if (l == null)
        first = newNode;elsel.next = newNode;
    size++;
    modCount++;
}

在LinkedList類中保存的數據都是利用Node節點進行的封裝處理,同時為了提高程序執行性能,每一次都會保存上一個追加的節點(最后一個節點),就可以在增加數據的時候避免遞歸處理,在增加數據時要進行數據保存個數的追加。

通過上面的分析,可以發現LinkedList封裝的就是一個鏈表實現。
面試題:
請問ArrayList與LinkedList有什么區別?

  • ArrayList是數組實現的集合操作,而LinkedList是鏈表實現的集合操作;

  • 在使用List集合中的get()方法根據索引獲取數據時,ArrayList的時間復雜度為“O(1)”、而LinkedList時間復雜度為“O(n)”(n為集合的長度);

  • ArrayList在使用時默認的初始化對象數組的大小長度為10,如果空間不足則會采用2倍形式進行容量的擴充,如果保存大數據量的時候有可能會造成垃圾的產生以及性能的下降,但是這時候可以使用LinkedList類保存。

上述內容就是LinkedList子類的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女