我必须对数组进行排序才能找到其中位数,但是现在我需要恢复数组的初始值,并保持原样。有可能吗?
答案 0 :(得分:6)
您不能那样做。排序是不可逆的。但是,您也可以将原始列表的所有元素添加到新的ArrayList中,然后对该列表进行排序。
List<String> original = ...;
List<String> copy = new ArrayList<>(original);
Collections.sort(copy);
我不会担心副本的占用空间。这是一个浅表副本,这意味着不会复制元素本身,而是仅使用引用原始列表中包含的元素的方式创建一个新列表。而且该操作相当快。我只会担心列表很大。
答案 1 :(得分:3)
使用@McEmperors回答但带有数组
Object[] saved = Arrays.copyOf(old, old.length);
Array.sort(old);
答案 2 :(得分:1)
有几种方法可以实现您想要的:
int[] unsorted = {2,3,1};
int[] sorted = unsorted.clone();
Arrays.sort(sorted);
//find mean in sorted then proceed with unsorted
create a custom sort function that retains a mapping between the positions.