Java中l(wèi)inkedlist的用法指南

Java中l(wèi)inkedlist的用法指南

北大青鳥長沙麓谷校區(qū)      2022-04-06 13:00:02     14

Java中l(wèi)inkedlist的用法指南,1.簡介LinkedList是 List和 Deque接口的雙鏈表實現(xiàn)。它實現(xiàn)所有可選的列表操作并允許所有元素(包括 null)。2.特點java中的Link

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

1.簡介

linkedList是 List和 Deque接口的雙鏈表實現(xiàn)。它實現(xiàn)所有可選的列表操作并允許所有元素(包括 null)。

2.特點

java中的linkedList使用指南

您可以在下面找到linkedList最重要的屬性:

索引到列表中的操作將從開頭或結(jié)尾遍歷列表,以較接近指定索引為準

它沒有同步,也就是說線程是不安全的

它的Iterator和ListIterator迭代器是快速失敗的(fail-fast,這意味著在迭代器創(chuàng)建之后,如果修改了列表,將拋出一個ConcurrentModificationException)

每個元素都是一個節(jié)點,它保留對下一個和前一個節(jié)點的引用

它維護插入順序

雖然linkedList未同步,但我們可以通過調(diào)用

Collections.synchronizedList方法檢索它的同步版本,如:

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

3.與ArrayList的比較

雖然它們都實現(xiàn)了List接口,但它們具有不同的語義 - 這肯定會影響決定使用哪一個。

(1)結(jié)構(gòu)體

一個ArrayList的是由支持基于索引數(shù)據(jù)結(jié)構(gòu)陣列。它提供對其元素的隨機訪問,其性能等于O(1)。

另一方面,linkedList將其數(shù)據(jù)存儲為元素列表,并且每個元素都鏈接到其前一個和下一個元素。在這種情況下,項目的搜索操作具有等于O(n)的執(zhí)行時間。

(2)操作

在linkedList中項的插入,添加和刪除操作更快,因為當(dāng)將元素添加到集合內(nèi)的某個任意位置時,不需要調(diào)整數(shù)組大小或更新索引,只有周圍元素中的引用才會更改。

(3)內(nèi)存使用情況

鏈表比ArrayList的內(nèi)存消耗要大,因為在每一個節(jié)點的鏈表存儲兩個引用,一個用于它的前一個元素,一個用于它的下一個元素,而ArrayList中僅保持數(shù)據(jù)和它的索引。

4.用法

以下是一些代碼示例,展示了如何使用linkedList:

(1)創(chuàng)建

linkedList<Object> linkedList = new linkedList<>();

(2)添加元素

linkedList實現(xiàn)List和Deque接口,除了標(biāo)準的add()和addAll()方法,你可以找到addFirst()和addLast(),它們分別在開頭或結(jié)尾添加一個元素。

(3)刪除元素

與元素添加類似,此列表實現(xiàn)提供removeFirst()和removeLast()。

此外,還有方便的方法removeFirstOccurence()和removeLastOccurence()返回boolean(如果collection包含指定的元素,則為true)。

(4)隊列操作

Deque接口提供類似隊列的行為(實際上Deque擴展了Queue接口):

linkedList.poll();linkedList.pop();

這些方法檢索第一個元素并將其從列表中刪除。

這兩個方法之間的區(qū)別是如果有空元素pop()將拋出NoSuchElementException異常,而poll()則返回null。API pollFirst()和pollLast()也可用。

以下是push(Object o)工作原理:

linkedList.push(Object o);

其中將元素作為集合的頭部插入。

linkedList有許多其他方法,其中大多數(shù)方法對于已經(jīng)使用過List的用戶應(yīng)該很熟悉。Deque提供的其他方法可能是“標(biāo)準”方法的便捷替代方案。

5.結(jié)論

ArrayList通常是默認的List實現(xiàn)。但是在持續(xù)的讀多于寫的場景(頻繁插入/刪除/更新)可能更適用linkedList。

以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機構(gòu)的小編針對“java中l(wèi)inkedlist的用法指南”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹防上當(dāng)。