java 8 将两个 int 数组的所有值相互求和

标签 java java-8 java-stream

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 to int.

如何使用流在 Java 8 中将 ar1 的每个值与 ar2 的每个值相加?

最佳答案

您应该使用 flatMap,因为 IntStreammap 应该映射原始流的每个 int 元素IntStreamint,而不是 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/

相关文章:

java - 为什么在服务器启动时正确注入(inject)的 spring bean 在我将表单发布到 Controller 时为空?

java - 使用 Hibernate 加载整个数据库

java - 在字符串中查找特定标记的最佳方法(在 Java 中)是什么?

java - 检测电池充电 Android

java - 调用 @Singleton bean 的方法

java - 分组和计数比较两个对象数组Java

java - 谁在把元素放入HashMap时调用了类的equals方法?

Java 使用 IntStream.range 求和部分列表的嵌套属性

java - Stream reduce() 要求到底包含什么?

java - 如何使用无限的java.util.stream.Stream?