我有两个名为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表达式等)来实现上面的工作,计算总和?
答案 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检查。
(在我的方案中,我列出了对对象内的值进行了通用类型和计算的位置,该值可能为空)