首页 > 解决方案 > Java LinkedList 排序改变了其他列表

问题描述

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

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

entry 是另一个 LinkedList,我想让它不排序。我创建了一个名为 sorted 的新 LinkedList 以不更改原始条目列表。排序列表仅用于此双重功能。但是,每次我调用该函数时,它仍然会对条目列表进行排序。

如何在不更改原始列表的情况下对其进行排序?

到目前为止我所做的:

  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));}

而且它们都没有正常工作。他们进行排序工作,但他们更改了我不想更改的条目列表。


感谢大家。现在问题已经解决了。我将它们复制粘贴到另一个软件并粘贴回来,它现在可以正常工作。我仍然不明白为什么。

标签: javasortingmedian

解决方案


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

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

推荐阅读