乘以&在Java8中对两个ArrayLists求和

时间:2015-06-28 02:32:07

标签: java java-8 java-stream

我有两个名为A和B的ArrayLists,大小相等,包含一些数字。现在我想计算这样的事情:

int sum = 0;
for(int i=0; i<A.size() && i<B.size(); i++) {
  sum += A.get(i)*B.get(i);
}

如何在不使用任何额外的用户定义方法的情况下,通过使用Java 8功能(流,lambda表达式等)来实现上面的工作,计算总和?

2 个答案:

答案 0 :(得分:13)

int sum = 
    IntStream.range(0, min(a.size(), b.size())
             .map(i -> a.get(i) * b.get(i))
             .sum();

答案 1 :(得分:0)

int sum = IntStream
            .range(0, min(a.size(), b.size())
            .map(i -> 
              (a.get(i).getValue() == null || b.get(i).getValue() == null) ? 0 :
                       (a.get(i).getValue() * b.get(i).getValue()))
            .sum();

整洁的解决方案!
我有类似的要求,并且添加了三元运算符null检查。 (在我的方案中,我列出了对对象内的值进行了通用类型和计算的位置,该值可能为空)

相关问题