dan*_*i88 6 multidimensional-array java-8 java-stream
我是 Java8 新手,无法使用流将一个数组映射到另一个二维数组。
我有一个二维数组,它是一种模式:
boolean[][] pattern = {
{true, true, false},
{true, false, true},
{false, true, true}
};
Run Code Online (Sandbox Code Playgroud)
第二个数组包含键。
0 表示:从模式中取出 0 个元素
1 表示:从模式中取出 1 个元素,依此类推
int[] keys = {2, 1, 0};
Run Code Online (Sandbox Code Playgroud)
我想从这两个数组生成另一个二维数组。在这种情况下,结果将如下所示:
boolean[][] result = {
{false, true, true},
{true, false, true},
{true, true, false}
};
Run Code Online (Sandbox Code Playgroud)
这是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;
}
Run Code Online (Sandbox Code Playgroud)
在 Java8 中我只能打印每一行
Arrays.stream(keys).mapToObj(x -> pattern[x]).forEach(x -> System.out.println(Arrays.toString(x)));
Run Code Online (Sandbox Code Playgroud)
但无法将其转换为二维数组。
请帮忙
你可以这样做,
boolean[][] result = Arrays.stream(keys).mapToObj(i -> pattern[i]).toArray(boolean[][]::new);
Run Code Online (Sandbox Code Playgroud)
由于您已经在阶段Stream<boolean[]>之后map,您只需要提供一个数组生成器函数。
| 归档时间: |
|
| 查看次数: |
2912 次 |
| 最近记录: |