首页 > 解决方案 > 从字符串数组中提取列

问题描述

我有一个字符串数组

String[] outLines = ['1 2 3', '1 2 3', '1 2 3'];

我想要做的是将某一列的所有值提取到一个新数组中。例如,第一列数组将包含[1, 1, 1]. 第二列数组将包含[2, 2, 2]等。

我的第一个想法是循环字符串数组,使用空格分割每个字符串,然后将每个值添加到其相关的列数组中。

我想知道,有没有更好的方法呢?在性能和语法方面。

标签: java

解决方案


哇 !自从上次我发现这种问题以来已经有一段时间了!,有很多方法可以达到你的答案,考虑其中一种,只需要四行代码。

String[] outLines = {"1 2 3", "1 2 3", "1 2 3"};
List<String[]> accumulator = new ArrayList<>();
Arrays.stream(outLines).map(o -> o.split(" ")).forEach(accumulator::add);
String[][] result = accumulator.toArray(String[][]::new);

//Validate the result
Arrays.stream(result).map(Arrays::stream).forEach(o -> {
  System.out.println();
  o.forEach(System.out::print);
});

您还可以创建一个收集器并使用累加器和组合器退出,类似于我为您编写的内容,并将答案减少到两行。


推荐阅读