如何在不删除Java中重复项的情况下对列表进行排序?
给出包含重复的{3,1,2,1,1,4}的列表, 应该对它进行排序,以便最后得到{1,1,2,3,4}。 我不在乎重复的顺序。 它应适用于具有定义良好的比较器的任意数据结构。
Java List.sort(comparator)删除重复项。 没有多余的参数可以保留重复项。
答案 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]
答案 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));