如何在不删除重复项的情况下对列表进行排序?

时间:2020-05-12 18:32:17

标签: java sorting duplicates

如何在不删除Java中重复项的情况下对列表进行排序?

给出包含重复的{3,1,2,1,1,4}的列表, 应该对它进行排序,以便最后得到{1,1,2,3,4}。 我不在乎重复的顺序。 它应适用于具有定义良好的比较器的任意数据结构。

Java List.sort(comparator)删除重复项。 没有多余的参数可以保留重复项。

2 个答案:

答案 0 :(得分:1)

该问题基于错误的前提。 List.sort()不会删除重复项。

import java.util.*;

class Main {
  public static void main(String[] args) {
    List<Integer> numbers = new ArrayList<>(Arrays.asList(3, 1, 2, 1, 4));
    numbers.sort(null);
    System.out.println(numbers);
  }
}

输出:

[1, 1, 2, 3, 4]

Try it on repl.it

答案 1 :(得分:0)

您可以在Java中使用Arras.sort(result),它基于Quicksort并且不稳定,因此将整数列表转换为int数组并进行排序

    List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 2, 1, 4));
    int[] result = list.toArray(new int[0]);
    Arrays.sort(result);
    System.out.println(Arrays.toString(result));