Jim*_*Jim 2 java sorting collections list arraylist
我有一个ArrayList.
如何List使用相同的数据实例化新的但已排序?
我想到了以下几点:
ArrayList复制构造函数,然后使用Collections.sortTreeSet对于选项(1),存在复制元素然后排序的额外开销.
对于选项(2),将删除重复项.
最好的方法是什么?
如果您可以使用第三方库,那么使用Guava就可以了
List<Foo> sortedCopy = Ordering.from(comparator).sortedCopy(list);
Run Code Online (Sandbox Code Playgroud)
(披露:我向番石榴捐款.)
在 Java 8 中,您可以使用流:
ArrayList<Integer> myArrayList = new ArrayList();
myArrayList.add(4);
myArrayList.add(6);
List<Integer> myNewSortedList = myArrayList.stream().sorted().collect(Collectors.asList());
Run Code Online (Sandbox Code Playgroud)
但是,上面的列表不能改变。如果需要,您可以改为收集ArrayList:
myArrayList<Integer> myNewSortedList = myArrayList.stream().sorted().collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)