ArrayList或LinkedList更适合排序吗?

我想使用需要不时排序的数据结构。 数据结构的大小几乎不会超过1000个项目。

哪一个更好 – ArrayListLinkedList

哪种排序算法更好用?

直到Java 7,它没有任何区别,因为Collections.sort会将列表的内容转储到数组中。

使用Java 8,使用ArrayList应该稍快一些,因为Collections.sort将调用List.sortArrayList有一个专门的版本,可以直接对支持数组进行排序,从而保存副本。

所以底线是ArrayList更好,因为它提供了类似或更好的性能,具体取决于Java的版本。

如果你要使用java.util.Collections.sort(List)那么它真的没关系。

如果List没有实现RandomAccess ,那么它将被转储到List 无论如何,该列表将被转储到数组中以进行排序。

(谢谢你让我诚实的拉尔夫。看起来我混淆了排序和洗牌的实现。他们足够接近同样的事情吧?)

如果您可以使用Apache库,那么请查看TreeList 。 它正确地解决了您的问题。

只有1000件? 你为什么在乎?

我通常总是使用ArrayList,除非我有特殊需要。

看看源代码。 如果我没记错的话,我认为排序是基于数组的。

如果你只是排序而不是动态更新你的排序列表,那么要么很好,一个数组会更有效。 如果要维护排序列表,链接列表确实更好。 插入对象很快就会进入链表的中间,但会慢慢进入数组。

如果要在中间找到对象,则数组更好。 使用数组,您可以进行二进制排序,并在O(logN)时间内查找成员是否在列表中。 使用链表,您需要遍历整个列表,这非常慢。

我想哪个更适合您的应用程序取决于您在排序后要对列表执行的操作。