gpt4 book ai didi

Java 流与二维数组

转载 作者:行者123 更新时间:2023-12-02 08:54:42 26 4
gpt4 key购买 nike

下午好,我最近在 Java 类(class)中了解了 Steam,想扩展我的知识。

我正在尝试流式传输二维数组,并将前一行中的元素之和添加到下一行中的每个元素。

我也想让这个流并行,但这会带来一个问题,因为如果流在第一行完成之前开始处理第二行,则数据完整性将受到质疑。

有没有办法在java中做到这一点?

最佳答案

如果我理解正确,这种和平的代码可以满足您的要求:

    int[][] matrix = new int[][]{{1,2,3},{3,2,1},{1,2,3}};
BiConsumer<int[], int[]> intArraysConsumer = (ints, ints2) -> {
for (int i = 0; i < ints.length; i++) {
ints[i] = ints[i] + ints2[i];
}
} ;
int[] collect = Arrays.stream(matrix).collect(() -> new int[matrix[0].length], intArraysConsumer, intArraysConsumer);
System.out.println(Arrays.toString(collect));

输出:[5,6,7]

根据我对流API的理解,它将决定是否并行运行它,这就是为什么你需要提供一个你需要的对象的创建者,从空开始,一种积累它的方法,以及一种结合两个的方法的部分累积对象。对于这种特殊情况,累积和组合操作是相同的。

请引用:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#collect-java.util.function.Supplier-java.util.function.BiConsumer-java.util.function.BiConsumer-

关于Java 流与二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60554621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com