簡體   English   中英

Java 和集合:何時使用數組鏈表?

[英]Java and collections:When to use a linked list of arrays?

使用數組鏈表有什么好處?

我讀過,如果數據很大並且允許插入(例如,文本緩沖區),那么一個常見的中途措施是使用數組的鏈表。
但是沒有解釋使用這種結構有什么好處。

或者至少我沒有得到它。

那么使用數組鏈表的好處是什么?何時使用?

使用數組鏈表,您可以輕松地結合鏈表和靜態數組的優點。

檢查這個問題。

想想這個問題:

想象一下(字面意義的)一疊盤子 如果堆棧太高,它可能會倒塌 因此,在現實生活中,當前一疊超過某個閾值時,我們可能會開始一個新的疊堆棧應該由多個堆棧組成,並且在前一個堆棧超出容量時應創建一個新堆棧(Cracking Tech Code Interview)

如果沒有必要,無需創建自定義數據結構。 因為作為數組的鏈表,HashMap 沒有區別。

我可以想到相反的情況:鏈表數組(實際上是 hashmap),其中每個數組元素都是一個桶,指向可以動態增長的列表。想想正在構建的字典並添加新單詞,但字母數是持續的。

您所描述的一些示例可以是基於跳過列表的解決方案,我也可以想到一些有效的散列或實現批處理作業的常量集的動態隊列。

我認為它能夠將數據的新部分(相當大,可能是)簡單地作為一個新數組插入到列表中,而不會觸及列表中插入位置之后的現有數組。

通常,插入鏈表比插入數組更快,因為它不需要在新元素之后移動元素。 在您描述的情況下,好處應該更顯着,因為您不需要移動根據定義而大(平均)的所有后續數據。

同時,我們應該考慮到訪問這種數據結構更復雜,速度也更慢。

PS 另外,如果速度對你來說真的很重要,首先我會做一個小調查,比較現有的數據結構(ArrayList、LinkedList、數組等)的實際實現。

當您需要從集合中快速獲取對象並且不確定是否有足夠的內存來分配“整個”數組(ArrayList 實現)時,您可能會編寫自己的實現,該實現使用數組列表來快速找到您正在尋找的對象。

但是這種方法肯定有更好的數據結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM