如果我有一个数组列表,并且我既想要它的排序版本,又想要它的未排序版本,我如何才能实现它。
尝试使用集合
ArrayList<Integer> someNumbers = new ArrayList<>();如果我创建了一个新的arraylist = someNumbers并对其进行排序。原来的也被排序了吗?
ArrayList<Integer> sortedNumbers = someNumbers;
Collections.sort(sortedNumbers);这两个列表都会排序。
我如何才能简单地实现我想要做的事情呢?(得到一份排序好的副本,并保持原始文档的顺序)
发布于 2017-01-04 21:29:28
两个列表都排序的原因是,即使您首先创建一个new ArrayList(),然后使用对someNumbers的引用覆盖此实例。因此,当您对sortedNumbers进行排序时,实际上是对原始列表someNumbers进行排序。
有几种方法可以实现你的目标:
ArrayList<Integer> sortedNumbers = new ArrayList<>();
sortedNumbers.addAll(someNumbers);或者,您可以通过使用复制构造函数在一步中完成相同的操作:
ArrayList<Integer> sortedNumbers = new ArrayList<>(someNumbers);https://stackoverflow.com/questions/41464907
复制相似问题