multidimensional-array - java8数组流到二维数组
问题描述
我是 Java8 的新手,我不能使用流将一个数组映射到另一个二维数组。
我有一个二维数组,它是一种模式:
boolean[][] pattern = {
{true, true, false},
{true, false, true},
{false, true, true}
};
第二个数组包含键。
0 表示:从模式中获取 0 元素
1 表示:从模式中获取 1 个元素,依此类推
int[] keys = {2, 1, 0};
从这两个数组中,我想生成另一个二维数组。在这种情况下,结果将如下所示:
boolean[][] result = {
{false, true, true},
{true, false, true},
{true, true, false}
};
这是Java7中的代码:
public boolean[][] producePlan(int[] keys, boolean[][] pattern) {
boolean[][] result = new boolean[keys.length][];
for (int i = 0; i < keys.length; i++) {
result[i] = pattern[keys[i]];
}
return result;
}
在Java8中,我只能打印每一行
Arrays.stream(keys).mapToObj(x -> pattern[x]).forEach(x -> System.out.println(Arrays.toString(x)));
但不能将其转换为二维数组。
请帮忙
解决方案
你可以这样做,
boolean[][] result = Arrays.stream(keys).mapToObj(i -> pattern[i]).toArray(boolean[][]::new);
既然你有舞台Stream<boolean[]>
后map
,你只需要提供一个数组生成器功能。
推荐阅读
- sql-server - 如何将包含双引号的csv中的数据批量插入到sql server 2014
- sharepoint - 引导 4 卡 IE 11
- swift - 在我的 IOS 应用程序中使用淡出图像制作自定义启动页面
- c# - 集合数据操作 Blue Prism:计算阶段 - 并根据结果分为两个集合
- kubernetes - Kubernetes入口证书
- angular - 使用 Angular2+ InMemoryWebAPI 时无法加载 SVG 图标
- javascript - (Angular) 使用 jQuery(或纯 JS)检查特定的 mat-slide-toggles
- ruby-on-rails - 如何在调用条带支付创建 API 时修复错误?
- version-control - 当有另一个分支时,我可以删除一个分支吗?
- c - 如何在数组中使用类型转换来分隔数据?