如何在不改变列表的情况下对其进行排序

6
我想在Java中对项目列表进行排序,并使排序返回一个新的已排序而不改变原来的。是否有常用的库可以做到这一点?

3
所有Java SE集合类都有一个可以复制其他集合的构造函数。使用这个功能,您可以执行List<Item> sortedList = new ArrayList<>(unsortedList); sortedList.sort(null);操作。 - VGR
2
1)复制它,对副本进行排序;或者2)使用stream()将其转换为流,然后对流进行排序。也许可以3)创建一个已排序的“视图”-但是这将具有O(lg n)的访问时间,因此可能没有用处。 - Boris the Spider
2个回答

8

3

这将把原列表中的元素(通过引用)复制到新列表中。对其中一个列表进行排序等更改不会影响另一个列表。

List<String> originalList = new ArrayList<String>();
List<String> newList = new ArrayList(originalList);

请注意,如果您修改列表中的对象,这些更改将反映在两个列表中,因为对象是按引用复制的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接