我想对数字列表进行排序而不更改原始列表。这就是我所做的:
public double median(){
//first,sort the list
LinkedList<Double>sorted = entries;
Collections.sort(sorted); ...
entries是另一个LinkedList,我希望它不排序。 我创建了一个新的LinkedList,命名为sorted,目的是不更改原始条目列表。排序列表仅用于此双重功能。 但是,每次我调用该函数时,它仍然会对条目列表进行排序。
到目前为止我所做的:
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));}
它们都没有正常工作。 他们进行排序工作,但是他们更改了我不想更改的条目列表。
谢谢大家。 现在问题已解决。我将其复制粘贴到另一个软件并粘贴回去,现在它可以正常工作了。 我仍然不明白为什么。
答案 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;
}