當前位置:
首頁 > 知識 > Java集合——LinkedList

Java集合——LinkedList

上一節分析了ArrayList,這次分析一下LinkedList,LinkedList相對我來說使用的比較少一些,一般都直接使用ArrayList,這次看源碼希望自己可以把這些集合能夠使用的更加適合的場景,能夠根據實際情況做更多的考慮。


LinkedList概述

一看名字就知道它肯定是使用鏈表實現的List集合,LinkedList是基於雙向鏈表實現的,

實現所有可選的列表操作,並允許所有元素(包括null)。注意LinkedList實現不是同步的,所以如果需要在多線程中使用它,則它必須在外部進行同步。使用這樣的:

List list = Collections.synchronizedList(new LinkedList(...));

LinkedList也具有快速失敗的特性,如果列表迭代器結構改性後創建的任何時間,以任何方式除了通過迭代器的刪除或添加方法,迭代器將拋出一個concurrentmodificationexception。因此,面對並發修改時,迭代器會快速而乾淨地失敗,而不是在未來的某個時間內冒任意、不確定的行為。


LinkedList源碼分析

2.1、定義

public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, java.io.Serializable

繼承AbstractSequentialList,AbstractList此類提供了 List 介面的骨幹實現,從而最大限度地減少了實現受「連續訪問」數據存儲(如鏈接列表)支持的此介面所需的工作。對於隨機訪問數據(如數組),應該優先使用 AbstractList,而不是先使用此類(百度百科)。實現了List,Deque雙端隊列。是一種具有隊列和棧的性質的數據結構。實現了Cloneable、序列化Serializable。

2.2、屬性

transient int size = 0;//大小等於0

transient Node first;//指向第一個節點。

transient Node last;//指向最後一個節點。

private static final long serialVersionUID = 876323262645176354L;//序列號

Java集合——LinkedList

2.3、構造方法

Java集合——LinkedList

Java集合——LinkedList

Java集合——LinkedList

Java集合——LinkedList

2.4、增加方法

Java集合——LinkedList

基於增加方法在1.7確實有一些難以理解,我還是簡單畫一個流程圖來展示:

Java集合——LinkedList

Java集合——LinkedList

add(int index, E element):在此列表中指定的位置插入指定的元素。

addAll(Collection c):添加指定 collection 中的所有元素到此列表的結尾,順序是指定 collection 的迭代器返回這些元素的順序。

addAll(int index, Collection c):將指定 collection 中的所有元素從指定位置開始插入此列表。

2.5、移除方法

Java集合——LinkedList

Java集合——LinkedList

2.6、查找方法

Java集合——LinkedList


學習Java的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java團長 的精彩文章:

自學的程序員如何找到好工作?
Java基礎——簡單實現線程池
快速認識Java內存區域劃分
Java線程間通信之wait/notify
Java集合——ArrayList

TAG:Java團長 |