如果我有Map这样的:
HashMap<Integer, ComparableObject> map;
Run Code Online (Sandbox Code Playgroud)
我想获得一个使用自然排序排序的值集合,哪种方法最快?
创建可排序集合的实例,例如ArrayList,添加值,然后对其进行排序:
List<ComparableObject> sortedCollection = new ArrayList<ComparableObject>(map.values());
Collections.sort(sortedCollection);
Run Code Online (Sandbox Code Playgroud)
创建一个有序集合的实例TreeSet,然后添加值:
Set<ComparableObject> sortedCollection = new TreeSet<ComparableObject>(map.values());
Run Code Online (Sandbox Code Playgroud)
请注意,结果集合永远不会被修改,因此排序只需要进行一次.
如果我有一个排序列表(比如快速排序),如果我要添加很多值,最好暂停排序,将它们添加到最后,然后排序,或者使用二进制文件来正确放置项目添加它们.如果这些项目是随机的,或者已经或多或少的顺序,它会有所不同吗?
我使用Collections.sort()对其元素实现Comparable接口的LinkedList进行排序,因此它们按自然顺序排序.在javadoc文档中,它说这个方法使用具有n*log(n)性能的mergesort算法.
我的问题是,是否有更有效的算法来排序我的LinkedList?
该列表的大小可能非常高,排序也会非常频繁.
谢谢!