如何使用Java Arrays.sort

czy*_*czy 9 java arrays sorting

我正在学习如何Arrays.sort(...)在Java中工作.

为什么变量:temp并且dopas在唯一排序后排序temp

System.out.println("Before");
for (int i = 0; i < POP; i++)
  System.out.println(dopas[i]+"");           //dopas is unsorted

System.out.println("After");
float[] temp=dopas;
Arrays.sort(temp);                           //sort temp

for (int i = 0; i < POP; i++)
  System.out.println(temp[i]+" "+dopas[i]);  //Both temp and dopas are now sorted
Run Code Online (Sandbox Code Playgroud)

我预计多巴仍未分类.

sle*_*ske 22

数组是Java中的对象,因此在使用数组变量时,实际上是使用对数组的引用.

这样就行了

float[] temp=dopas;
Run Code Online (Sandbox Code Playgroud)

只会复制对数组的引用dopas.此后, dopastemp指向同一阵列;因此,这两会出现使用之后排序sort().

使用System.arrayCopyArrays.copyOf创建数组的副本.


Dog*_*xed 7

你的任务:float[] temp=dopas;实际上只是复制对数组的引用.我认为你想做的是float[] temp = dopas.clone();


Jea*_*art 6

temp只是一个参考dopas.实际上内存中只有一个数组.

如果您想temp成为副本dopas,请尝试:

float[] temp = Arrays.copyOf(dopas, dopas.length);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您将深层复制数组,而不是浅层复制它!