首页 > 解决方案 > 按数字顺序对数字的 ArrayList 进行排序

问题描述

我有一个数字的字符串列表(它们可以是一个 int 列表,只需将其转换为一个数组列表即可返回),这个数字可以来自一个范围,例如从 1 到 25。

我尝试使用对它们进行排序,Collections.sort(numbersList);但它以一种奇怪的方式对它们进行排序。例如这是当前排序:

1
10
11
..
2
20
21
..

我真正想要的是按数字顺序对其进行排序,例如:

1
2
3
..
10
11
..

试图将它们排序为int[]withArrays.sort(numbers);但它给出了相同的结果。

这是我用来生成数字并将它们转换为数组列表的代码。

int[] range = IntStream.rangeClosed(1, 30).toArray();
Arrays.sort(range);
List<String> rangeList = new ArrayList<>();
for (int number : range) {
    rangeList.add(String.valueOf(number));
}

标签: javasortingarraylist

解决方案


我觉得我以前见过这个,但是您可以在 Java 8+ 中尝试以下操作(numbersListString[] 在哪里):

Arrays.sort(numbersList, Comparator.comparing(Integer::valueOf));

此外,在您的代码中,您的初始化存在问题range,因为 Integer.parseInt 的括号未关闭,并且参数错误。它应该替换为以下内容:

int[] range = IntStream.rangeClosed(1, 30).toArray();

执行此操作后您不需要排序,因为IntStream.rangeClosed承诺 IntStream 中的所有元素都将按排序顺序提供。如果您想了解有关如何正确使用 Integer.parseInt 的更多信息,我强烈建议您查看Javadoc


推荐阅读