java - 按数字顺序对数字的 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));
}
解决方案
我觉得我以前见过这个,但是您可以在 Java 8+ 中尝试以下操作(numbersList
String[] 在哪里):
Arrays.sort(numbersList, Comparator.comparing(Integer::valueOf));
此外,在您的代码中,您的初始化存在问题range
,因为 Integer.parseInt 的括号未关闭,并且参数错误。它应该替换为以下内容:
int[] range = IntStream.rangeClosed(1, 30).toArray();
执行此操作后您不需要排序,因为IntStream.rangeClosed承诺 IntStream 中的所有元素都将按排序顺序提供。如果您想了解有关如何正确使用 Integer.parseInt 的更多信息,我强烈建议您查看Javadoc。
推荐阅读
- r - R`t.test`问题导致`159等于8875`
- python - onedrivesdk 未使用 pip 安装
- amazon-web-services - 如何从 cloudwatch 日志中提取时间值以执行数学运算
- audio - ubuntu 18.04 没有声音
- javascript - 如何使用javascript覆盖ubuntu中的默认cmd快捷键
- java - Joda-time,期间计算问题?
- sage-erp - 如何在 SAGE 中从外部系统创建 IC 内部使用条目?
- angular - 角料表检测滚动
- python-3.x - 尝试在 pycharam 中使用 sys
- javascript - 循环循环 React Material UI Javascript