java - 从字符串数组中提取列
问题描述
我有一个字符串数组
String[] outLines = ['1 2 3', '1 2 3', '1 2 3'];
我想要做的是将某一列的所有值提取到一个新数组中。例如,第一列数组将包含[1, 1, 1]
. 第二列数组将包含[2, 2, 2]
等。
我的第一个想法是循环字符串数组,使用空格分割每个字符串,然后将每个值添加到其相关的列数组中。
我想知道,有没有更好的方法呢?在性能和语法方面。
解决方案
哇 !自从上次我发现这种问题以来已经有一段时间了!,有很多方法可以达到你的答案,考虑其中一种,只需要四行代码。
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);
});
您还可以创建一个收集器并使用累加器和组合器退出,类似于我为您编写的内容,并将答案减少到两行。
推荐阅读
- beautifulsoup - 第一个 ul 标签下的所有 li 标签
- c - 使用 CMake 生成静态可执行文件
- https - Gitlab Runner 注册返回(401 Unauthorized)
- vb6 - 无法在 Windows 2019 Server 上的 VB6 中保存
- angular - 以角度返回一个空数组
- data-structures - 中序遍历只返回一个值
- javascript - 在循环中向数组添加不同的值。Javascript
- javascript - 谷歌散点图上的数据点与静态多边形
- android - 如何在 Android 上调试 PDF 文件?
- java - 如何在 RecyclerView 中居中选定项目 - Kotlin