Java LinkedList сортировать изменил другой список - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу отсортировать список номеров без изменения исходного списка. Вот что я сделал:

public double median(){
    //first,sort the list
    LinkedList<Double>sorted = entries;
    Collections.sort(sorted); ...

записи - это еще один LinkedList, который я бы хотел отсортировать. Я создал новый LinkedList с именем sorted, чтобы не изменять исходный список записей. Сортированный список используется только для этой двойной функции. Однако каждый раз, когда я вызываю функцию, она все равно сортирует список записей.

Как мне отсортировать его без изменения исходного списка?

Что я сделал до сих пор:

  1. LinkedListsorted = записи;

2

LinkedList<Double>sorted = new LinkedList<Double>();
Collections.copy(sorted,entries);

3

LinkedList<Double>sorted = new LinkedList<Double>();
for(int i=0;i<entries.size();i++){
sorted.add(entries.get(i));}

И ни один из них не работает должным образом. Они выполняют сортировку, но они изменили список записей, который я не хочу менять.


Спасибо всем. Проблема сейчас решена. Я скопировал, вставил их в другое программное обеспечение и вставил обратно, и теперь он работает правильно. Я до сих пор не могу понять, почему.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018
public static LinkedList<Double> sort(LinkedList<Double> list) {
    LinkedList<Double> res = new LinkedList<>(list);
    Collections.sort(res);
    return res;
}
0 голосов
/ 05 ноября 2018

Вы не создали новый список, вы просто присвоили его переменной с именем sorted, если вы хотите иметь отсортированную копию, вам нужно будет скопировать ее в другой список следующим образом.

LinkedList<Double> sorted = new LinkedList<Double>();
Collections.copy(sorted, entries);
Collections.sort(sorted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...