Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按数字顺序对数字数组列表进行排序_Java_Sorting_Arraylist - Fatal编程技术网

Java 按数字顺序对数字数组列表进行排序

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到25

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

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]