我有一个使用ArrayList排序的Collections.sort
但是结果看起来像下面这样。我如何使其升序?

[0, 1, 11, 12, 12, 13, 13, 14, 14, 16, 16, 16, 17, 17, 17, 18, 18, 19, 2, 2, 20, 20, 20, 21, 21, 22, 4, 7, 7, 7, 8, 9, 9, 9, 9, 9]

最佳答案

看起来您的ArrayList包含字符串而不是数字。通过将自定义Comparator传递给sort()方法,可以按数字顺序对其进行排序。

在Java 8中,可以使用Comparator.comparingInt()进行实际的比较,并结合Integer.parseInt()方法执行从字符串到int的转换:

ArrayList<String> list = new ArrayList<>();
// ... add values

list.sort(Comparator.comparingInt(Integer::parseInt));

10-05 21:20
查看更多