Как использовать Java Arrays.sort - PullRequest
       1

Как использовать Java Arrays.sort

9 голосов
/ 29 августа 2011

Я узнаю о том, как 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

Я ожидал, что допы останутся несортированными.

Ответы [ 13 ]

1 голос
/ 29 августа 2011

Потому что и массивы temp и dopas одинаковы. Присвоение temp=dopas; присваивает ссылку на массив. Он не копирует свой контент. По этой причине, когда вы сортируете первое, вы сортируете и второе.

0 голосов
/ 03 сентября 2017

temp и dopas ссылаются на один и тот же массив.

если вы хотите, чтобы temp действовал как новый массив, используйте метод clone () .

float[] temp = dopas.clone();

Метод clone () создает новый массив и копирует содержимое допов во вновь созданный массив.

0 голосов
/ 29 августа 2011

temp и dopas используют один и тот же указатель, так как вы не создаете новый экземпляр массива, вы просто назначаете один и тот же указатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...