【发布时间】:2019-01-09 19:04:40
【问题描述】:
我有一个二维整数数组(0 或 1),像这样......
int [][] gridInt = {
{0, 0, 0, 1, 0, 0},
{0, 0, 1, 1, 0, 0},
{1, 0, 1, 0, 0, 1},
{0, 0, 0, 0, 1, 0},
{0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0}
};
我想使用 Java 流和 .map() 将其转换为布尔值的二维数组。结果数组为:
boolean[][] gridBool = {
{false, false, false, true, false, false},
{false, false, true, true, false, false},
{true, false, true, false, false, true},
{false, false, false, false, true, false},
{false, true, false, false, false, false},
{false, false, false, false, false, false}
};
我最近的尝试是:
boolean[][] gridBool = Arrays.stream(gridInt)
.map(row -> Arrays.stream(row)
.mapToObj(i -> i == 1)
.toArray(Boolean[]::new)
)
.toArray(Boolean[][]::new);
但是我的代码没有编译,错误信息是:
error: incompatible types: inferred type does not conform to upper bound(s)
.toArray(Boolean[][]::new);
^
inferred: Boolean[]
upper bound(s): boolean[],Object
你能告诉我我做错了什么以及如何解决它吗?谢谢。
【问题讨论】:
-
boolean不是Boolean! -
这很简单 - 只需将一个小写
b更改为大写B。Boolean [][] gridBool...
标签: java dictionary multidimensional-array type-conversion java-stream