Java 按数字顺序对数字数组列表进行排序
我有一个数字的字符串列表(它们可以是一个整数列表,只需将其转换为数组列表即可返回),这些数字可以是一个范围,例如从1到25 我试着用Collections.sort(numbersList)对它们进行排序代码>但它以一种奇怪的方式对它们进行排序。例如,这是当前排序:Java 按数字顺序对数字数组列表进行排序,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个数字的字符串列表(它们可以是一个整数列表,只需将其转换为数组列表即可返回),这些数字可以是一个范围,例如从1到25 我试着用Collections.sort(numbersList)对它们进行排序但它以一种奇怪的方式对它们进行排序。例如,这是当前排序: 1 10 11 .. 2 20 21 .. 我真正想要的是按数字顺序排序,例如: 1 2 3 .. 10 11 .. 尝试使用数组将它们排序为int[]。排序(数字)但它给出了相同的结果 下面是我用来生成数字并将其转换为数组列表的代码
1
10
11
..
2
20
21
..
我真正想要的是按数字顺序排序,例如:
1
2
3
..
10
11
..
尝试使用数组将它们排序为int[]
。排序(数字)代码>但它给出了相同的结果
下面是我用来生成数字并将其转换为数组列表的代码
int[] range = IntStream.rangeClosed(1, 30).toArray();
Arrays.sort(range);
List<String> rangeList = new ArrayList<>();
for (int number : range) {
rangeList.add(String.valueOf(number));
}
int[]range=IntStream.rangeClosed(1,30).toArray();
数组。排序(范围);
List rangeList=新建ArrayList();
用于(整数:范围){
rangeList.add(String.valueOf(number));
}
我觉得我以前见过这个,但是您可以在Java 8+中尝试以下操作(其中numbersList
是字符串[]):
此外,在代码中,范围
的初始化存在问题,因为Integer.parseInt的括号未闭合,参数错误。应将其替换为以下内容:
int[] range = IntStream.rangeClosed(1, 30).toArray();
完成此操作后,您不需要排序,因为承诺将按排序顺序提供IntStream中的所有元素。如果您想了解有关如何正确使用Integer.parseInt的更多信息,我强烈建议您查看。如果您有字符串列表,则需要将它们作为整数进行比较以进行排序。在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]
Liststrings=Arrays.asList(“1”、“3”、“0”、“21”、“4”、“2”、“3”);
strings.sort(Comparator.comparing(Integer::valueOf));
System.out.println(字符串);
//打印[0,1,2,3,3,4,21]
一个更有效的选择是坚持比较int
s(原语)而不是Integer
s(对象):
Arrays.sort(数字、比较器.comparingInt(Integer::parseInt))代码>当您将它们作为字符串排序时,它将为您提供字母数字顺序,其中“10”在“2”之前。对整型进行排序应该是可行的,您可能没有正确地进行排序,但您没有显示代码,因此我们无法帮助您。@MK.我进行了编辑,以显示我第一次尝试对整型进行排序的方式。请编写一个完整的示例(),向我们展示您如何创建初始列表或数组。您编写的代码应该可以工作,我尝试了,它似乎可以工作。请注意,第一条语句也可以用于int[]
,因为Integer提供了。是的,我刚刚注意到,在代码中正确地存在parseInt,为了更好的示例,我尝试删除它们,但是忘了第一个。不过,这个办法奏效了!
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]