更新時間:2020-06-09 16:25:35 來源:動力節點 瀏覽2976次
1.簡介
LinkedList是 List和 Deque接口的雙鏈表實現。它實現所有可選的列表操作并允許所有元素(包括 null)。
2.特點
java中的LinkedList使用指南
您可以在下面找到LinkedList最重要的屬性:
索引到列表中的操作將從開頭或結尾遍歷列表,以較接近指定索引為準
它沒有同步,也就是說線程是不安全的
它的Iterator和ListIterator迭代器是快速失敗的(fail-fast,這意味著在迭代器創建之后,如果修改了列表,將拋出一個ConcurrentModificationException)
每個元素都是一個節點,它保留對下一個和前一個節點的引用
它維護插入順序
雖然LinkedList未同步,但我們可以通過調用
Collections.synchronizedList方法檢索它的同步版本,如:
List list = Collections.synchronizedList(new LinkedList(...));
3.與ArrayList的比較
雖然它們都實現了List接口,但它們具有不同的語義 - 這肯定會影響決定使用哪一個。
(1)結構體
一個ArrayList的是由支持基于索引數據結構陣列。它提供對其元素的隨機訪問,其性能等于O(1)。
另一方面,LinkedList將其數據存儲為元素列表,并且每個元素都鏈接到其前一個和下一個元素。在這種情況下,項目的搜索操作具有等于O(n)的執行時間。
(2)操作
在LinkedList中項的插入,添加和刪除操作更快,因為當將元素添加到集合內的某個任意位置時,不需要調整數組大小或更新索引,只有周圍元素中的引用才會更改。
(3)內存使用情況
鏈表比ArrayList的內存消耗要大,因為在每一個節點的鏈表存儲兩個引用,一個用于它的前一個元素,一個用于它的下一個元素,而ArrayList中僅保持數據和它的索引。
4.用法
以下是一些代碼示例,展示了如何使用LinkedList:
(1)創建
LinkedList<Object> linkedList = new LinkedList<>();
(2)添加元素
LinkedList實現List和Deque接口,除了標準的add()和addAll()方法,你可以找到addFirst()和addLast(),它們分別在開頭或結尾添加一個元素。
(3)刪除元素
與元素添加類似,此列表實現提供removeFirst()和removeLast()。
此外,還有方便的方法removeFirstOccurence()和removeLastOccurence()返回boolean(如果collection包含指定的元素,則為true)。
(4)隊列操作
Deque接口提供類似隊列的行為(實際上Deque擴展了Queue接口):
linkedList.poll();
linkedList.pop();
這些方法檢索第一個元素并將其從列表中刪除。
這兩個方法之間的區別是如果有空元素pop()將拋出NoSuchElementException異常,而poll()則返回null。API pollFirst()和pollLast()也可用。
以下是push(Object o)工作原理:
linkedList.push(Object o);
其中將元素作為集合的頭部插入。
LinkedList有許多其他方法,其中大多數方法對于已經使用過List的用戶應該很熟悉。Deque提供的其他方法可能是“標準”方法的便捷替代方案。
5.結論
ArrayList通常是默認的List實現。但是在持續的讀多于寫的場景(頻繁插入/刪除/更新)可能更適用LinkedList。
以上就是動力節點java培訓機構的小編針對“java中linkedlist的用法指南”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習