【发布时间】:2015-03-25 17:23:19
【问题描述】:
我想维持一个大小 List<Integer>。每次添加新元素时,我都会调用Collections.sort() 方法对列表中的新元素进行排序。据我所知ArrayList 比LinkedList 表现更好。但是由于我会经常调用sort() 方法,所以我开始理解linkedList 在对列表进行排序时会表现得更好,并且会比ArrayList 更好,因为不会像以防万一那样移动元素的ArrayList(使用array 作为底层数据结构)。任何更有效的建议。
【问题讨论】:
-
你已经回答了你的问题,链表显然更高效。另一种选择是像treeset...这样的二叉树
-
@Smac89 我的收藏中会有重复的元素,所以不能使用
Set,但类似于Binary Search Tree的东西会很棒,因为它的性能会比Collections.sort()更好。跨度> -
@Smac89 为什么你认为它显然更有效率?
-
@assylias OP 确实说过...
But since I will be calling sort() method quite often, I have come to understanding that linkedList will perform better when sorting the list and will be a better choice over ArrayList, since there is no shifting of elements as in case of ArrayList(uses array as underlying data structure).和 ofc,因为如果操作正确,对链表进行合并排序是 O(nlogn) 操作 -
@Smac89 我得到的结果似乎与您的说法不符。另请注意,在 Java 中对 LinkedList 进行排序比对 ArrayList 进行排序要慢,因为前者意味着将项的附加副本复制到数组中。
标签: java sorting arraylist linked-list