[英]Is an ArrayList or a LinkedList better for sorting?
我想使用需要不時排序的數據結構。 數據結構的大小幾乎不會超過1000個項目。
哪一個更好 - ArrayList
或LinkedList
?
哪種排序算法更好用?
直到Java 7,它沒有任何區別,因為Collections.sort
會將列表的內容轉儲到數組中。
對於Java 8,使用ArrayList
應該稍快一些,因為Collections.sort
將調用List.sort
而ArrayList
有一個專門的版本,可以直接對支持數組進行排序,從而保存副本。
所以底線是ArrayList
更好,因為它提供了類似或更好的性能,具體取決於Java的版本。
如果你要使用java.util.Collections.sort(List)
那么它真的沒關系。
如果 無論如何,該列表將被轉儲到數組中以進行排序。 List
沒有實現RandomAccess
,那么它將被轉儲到List
(謝謝你讓我誠實的拉爾夫。看起來我混淆了排序和洗牌的實現。他們足夠接近同樣的事情吧?)
如果您可以使用Apache庫,那么請查看TreeList 。 它正確地解決了您的問題。
只有1000件? 你為什么在乎?
我通常總是使用ArrayList,除非我有特殊需要。
看看源代碼。 如果我沒記錯的話,我認為排序是基於數組的。
如果你只是排序而不是動態更新你的排序列表,那么要么很好,一個數組會更有效。 如果要維護排序列表,鏈接列表確實更好。 插入對象很快就會進入鏈表的中間,但會慢慢進入數組。
如果要在中間找到對象,則數組更好。 使用數組,您可以進行二進制排序,並在O(logN)時間內查找成員是否在列表中。 使用鏈接列表,您需要遍歷整個列表,這非常慢。
我猜哪個更適合您的應用程序取決於您在排序后要對列表執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.