int[] ar1 = {1,2,3};
int[] ar2 = {1,2,3};
输出:
{2,3,4,3,4,5,4,5,6}
我试过这样的:
IntStream.range(0,ar1.length).map(x -> IntStream.range(0,ar2.length).map(y -> ar1[y]+ar2[x]));
但这不起作用:
Type mismatch: cannot convert from
IntStream
toint
.
如何使用流在 Java 8 中将 ar1
的每个值与 ar2
的每个值相加?
最佳答案
您应该使用 flatMap
,因为 IntStream
的 map
应该映射原始流的每个 int
元素IntStream
到 int
,而不是 IntStream
。
System.out.println(Arrays.toString (
IntStream.range(0,ar1.length)
.flatMap(x -> IntStream.range(0,ar2.length).map(y -> ar1[x]+ar2[y]))
.toArray ()));
输出:
[2, 3, 4, 3, 4, 5, 4, 5, 6]
作为创建数组索引的 IntStream
的替代方法,您可以创建数组元素的 IntStream
:
System.out.println(Arrays.toString (
Arrays.stream(ar1)
.flatMap(x -> Arrays.stream(ar2).map(y -> x + y))
.toArray ()));
关于java 8 将两个 int 数组的所有值相互求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45671351/