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

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

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

慕莱坞森 2023-04-19 16:11:07
我正在尝试测试我的技能,并且我尝试进行测试。我收到以下输入:[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,921,24,25,23,26116,115,117,120,121,119“String[parts]”获得了所有值,但我不知道如何对其进行排序,因为“parts”参数在“for 循环”中。如何将其转换为 int/Integer 并对每一行进行排序?
查看完整描述

3 回答

?
慕森卡

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

假设[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)

    .map(v -> Integer.parseInt(v))

    .collect(Collectors.toList());

Collections.sort(output);

System.out.println(Arrays.toString(output.toArray()));

这打印:


[6, 7, 9, 10, 11]


查看完整回答
反对 回复 2023-04-19
?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以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++) {

    String line = br.readLine();

    parts = line.split("[\\[\\] ,]+");

}


int ints[] = new int[parts.length];


for(int i = 0; i < parts.length; i++){

    ints[i] = Integer.parseInt(parts[i]);

}

Arrays.sort(ints);


查看完整回答
反对 回复 2023-04-19
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

一旦你有了,parts你必须把它转换String[]成一个int[]. 为此,首先为要输入的结果创建一个 int[]。它必须与您的大小相同String[]:


int[] ints = new int[parts.length];

然后,遍历String[]并在 中填充值int[]:


for (int i = 0; i < parts.length; i++) {

    ints[i] = Integer.parseInt(parts[i]);  // 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());



查看完整回答
反对 回复 2023-04-19
  • 3 回答
  • 0 关注
  • 119 浏览

添加回答

举报

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