为了账号安全,请及时绑定邮箱和手机立即绑定

IntStream 映射函数行为

IntStream 映射函数行为

慕侠2389804 2021-05-31 14:45:58
我有一小段代码可以计算给定数组中的正值、负值和零值的数量。通过迭代数组并计算正值、负值和零值的数量,我可以使用 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);}
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

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


Arrays.stream(arr)

        .parallel()

        .forEach(i -> {

             int k = i > 0 ? positive.getAndIncrement() : (i == 0 ? zero.getAndIncrement() : negative.getAndIncrement());

        });


查看完整回答
反对 回复 2021-06-02
  • 3 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信