本篇文章為大家展示了LinkedList子類的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在List接口中還有一個比較常用的子類:LinkedList,這個類通過名稱就可以發現其特點:基于鏈表的實現。那么首先觀察一下LinkedList的定義:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
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子類的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。