如何排序通过 Java 输入作为字符串接收的 int 数组/列表

我正在尝试测试我的技能,并且我尝试进行测试。

我收到以下输入:

[7,11,10,6,9]

[21,24,25,23,26]

[116,115,117,120,121,119]

我需要对所有这些值进行排序。

我尝试执行以下操作:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] parts = null;
List<String> linhas = new ArrayList<>();for (int i = 0; i < 3; i++) { 
   String line = br.readLine();
    line = line.replace("[","");
    line = line.replace("]","");
    line = line.replace(" ","");
    System.out.println(line);
    parts = line.split(",");
}

这样我就可以显示输出

7,11,10,6,9

21,24,25,23,26

116,115,117,120,121,119

“String[parts]”获得了所有值,但我不知道如何对其进行排序,因为“parts”参数在“for 循环”中。

如何将其转换为 int/Integer 并对每一行进行排序?


慕莱坞森
浏览 120回答 3
3回答

慕森卡

假设[7,11,10,6,9]是输入,我们可以尝试转换为整数列表,然后对该列表进行排序:String input = "[7,11,10,6,9]";input = input.replaceAll("\\[(.*)\\]", "$1");String[] vals = input.split(",");List<Integer> output = Arrays.stream(vals)&nbsp; &nbsp; .map(v -> Integer.parseInt(v))&nbsp; &nbsp; .collect(Collectors.toList());Collections.sort(output);System.out.println(Arrays.toString(output.toArray()));这打印:[6, 7, 9, 10, 11]

倚天杖

您可以replace()一次完成这些行并使用正则表达式更干净地拆分:parts = line.split("[\\[\\], ]+");并使用 cameron1024 在他的回答中演示的 Iterable 技术。我认为Iterable对于此用例,using 是比 using 更好的选择Streams,因为输入大小非常小并且Streams必须花费更多时间来启动。整个事情看起来像:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] parts;List<String> linhas = new ArrayList<>();for (int i = 0; i < 3; i++) {&nbsp; &nbsp; String line = br.readLine();&nbsp; &nbsp; parts = line.split("[\\[\\] ,]+");}int ints[] = new int[parts.length];for(int i = 0; i < parts.length; i++){&nbsp; &nbsp; ints[i] = Integer.parseInt(parts[i]);}Arrays.sort(ints);

慕姐8265434

一旦你有了,parts你必须把它转换String[]成一个int[]. 为此,首先为要输入的结果创建一个 int[]。它必须与您的大小相同String[]:int[] ints = new int[parts.length];然后,遍历String[]并在 中填充值int[]:for (int i = 0; i < parts.length; i++) {&nbsp; &nbsp; ints[i] = Integer.parseInt(parts[i]);&nbsp; // converts a string containing an integer into its int value}最后,要对每一行进行排序,只需调用 即可对Arrays.sort(ints);整数数组进行排序。奖金:这可以使用 Java 8 Streams 在一行中更干净地实现,如下所示:List<Integer> sortedInts = Arrays.stream(parts).map(Integer::parseInt).sorted().collect(Collectors.toList());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java