为了账号安全,请及时绑定邮箱和手机立即绑定

按数字顺序对数字的 ArrayList 进行排序

按数字顺序对数字的 ArrayList 进行排序

qq_花开花谢_0 2023-06-14 14:17:42
我有一个数字字符串列表(它们可以是一个 int 列表,只需要将它变成一个数组列表即可返回),这个数字可以来自一个范围,例如从 1 到 25。我尝试使用对它们进行排序Collections.sort(numbersList);,但它以一种奇怪的方式对它们进行排序。例如,这是当前排序:11011..22021..我真正想要的是按数字顺序对它进行排序,例如:123..1011..试图将它们排序为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));}
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

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

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

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

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

执行此操作后不需要排序,因为IntStream.rangeClosed承诺 IntStream 中的所有元素都将按排序顺序提供。


查看完整回答
反对 回复 2023-06-14
?
森栏

TA贡献1810条经验 获得超5个赞

如果您有一个字符串列表,则需要将它们作为整数进行比较以进行排序。在 Java 8+ 中,您可以执行以下操作:


listOfStrings.sort( Comparator.comparing( Integer::valueOf ) );

例子 :


List< String > strings = Arrays.asList( "1","3","0","21","4","2","3");

strings .sort( Comparator.comparing( Integer::valueOf ) );

System.out.println( strings );

//prints [0, 1, 2, 3, 3, 4, 21]


查看完整回答
反对 回复 2023-06-14
?
桃花长相依

TA贡献1860条经验 获得超8个赞

一个更有效的替代方法是坚持比较ints(基元)而不是Integers(对象):

Arrays.sort(numbers, Comparator.comparingInt(Integer::parseInt));


查看完整回答
反对 回复 2023-06-14
  • 3 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信