Java:创建 LinkedList 并将其转换为 ArrayList 进行排序是否有意义?

标签 java performance sorting arraylist linked-list

标题说明了一切。我必须将数千个对象添加到列表中,然后对它们进行排序。现在我想(因为向 LinkedList 添加东西要快得多)我会使用 LinkedList 来创建,然后像这样创建一个新的 ArrayList:

LinkedList<Foo> createList = new LinkedList<Foo>();
// add stuff
ArrayList<Foo> returnList = new ArrayList<Foo>(createList);
Collections.sort(returnList);
return returnList;

我的问题是:
这种方法真的比直接将对象添加到 ArrayList 更快甚至更慢吗?
或者,我知道要添加的对象的粗略数量。具有初始容量的 ArrayList 是否更快?

最佳答案

这与两个问题有关:
1. ArrayList有什么区别和 LinkedList ,哪个插入速度更快?
2. 哪个排序更快?

对于问题1,ArrayList的本质区别和 LinkedList是数据结构。 ArrayList在内部使用数组并且擅长随机访问(O(1))。另一方面,LinkedList擅长删除和插入项目(O(1)。你可以找到更多here
回到问题,因为我们这里不需要按索引插入。
所以ArrayListLinkedList都是 O(1) 操作。但是LinkedList会因为数据结构的原因造成更多的内存,而ArrayList如果需要扩展容量会导致更多时间(设置足够大的初始容量将有助于加快插入速度)。

对于问题 2,您可以找到答案 hereArrayList更适合排序。

总之,我认为你应该坚持使用ArrayList,不需要导入LinkedList这里。

关于Java:创建 LinkedList 并将其转换为 ArrayList 进行排序是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62227775/

相关文章:

javascript - 哪个更有效率? (JavaScript 循环的变量)

javascript - 如何简化下面的函数?

java - 如何按参数对数组列表进行排序?

java - rs.getGeneratedKeys() 在 Derby 中不起作用

java - 在 Bukkit 中将 args 组合成一个句子?

java - 打开用 Java 创建的 Excel 电子表格时出现输入/输出错误

python - 查找 CSV 文件中的最高平均值

java - 针对外部模式文件验证 JSON 模式是否符合 Jackson

html - 哪个 CSS 更快?上限大小会提高速度吗?

c++ - 拓扑排序算法不能正常工作