gpt4 book ai didi

java - IntStream 映射函数行为

转载 作者:行者123 更新时间:2023-12-01 17:50:02 24 4
gpt4 key购买 nike

我有一小段代码可以计算给定数组中正值、负值和零值的数量。我可以使用 Java 7 轻松完成此操作,方法是迭代数组并计算正值、负值和零值的数量。但是对于Java 8流,在map函数中编写条件是否正确?目前此代码仅迭代一次并跳过数组的其余值。

static void calculatePositiveNegativeAndZero(int[] arr) {
AtomicInteger positive = new AtomicInteger(0);
AtomicInteger zero = new AtomicInteger(0);
AtomicInteger negative = new AtomicInteger(0);
int len = arr.length;
Arrays.stream(arr)
.parallel()
.map(i -> i > 0 ? positive.getAndIncrement() : (i == 0 ? zero.getAndIncrement() : negative.getAndIncrement()));

System.out.println(positive.doubleValue()/len);
System.out.println(negative.doubleValue()/len);
System.out.println(zero.doubleValue()/len);
}

最佳答案

您的流管道中没有终端操作,因此根本不应该执行它。您可以使用 forEach 代替 map:

Arrays.stream(arr)
.parallel()
.forEach(i -> {
int k = i > 0 ? positive.getAndIncrement() : (i == 0 ? zero.getAndIncrement() : negative.getAndIncrement());
});

关于java - IntStream 映射函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51403058/

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