Java LinkedList排序更改了其他列表

时间:2018-11-04 21:20:25

标签: java sorting median

我想对数字列表进行排序而不更改原始列表。这就是我所做的:

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

entries是另一个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 :(得分:2)

您尚未创建新列表,只是将其分配给名为sorted的变量,如果要获得排序的副本,则需要将其复制到另一个列表,如下所示。

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

答案 1 :(得分:1)

public static LinkedList<Double> sort(LinkedList<Double> list) {
    LinkedList<Double> res = new LinkedList<>(list);
    Collections.sort(res);
    return res;
}