class A
{
Integer a;
Integer b;
Integer c;
}
List<A> inputList= func();
X x=new X();
int sumA = inputList.stream().mapToInt(e->e.getA()).sum();
int sumB = inputList.stream().mapToInt(e->e.getB()).sum();
int sumC = inputList.stream().mapToInt(e->e.getC()).sum();
x.setSumA(sumA);
x.setSumB(sumB);
x.setSumC(sumC);
这将解决它,但我想在一次迭代中执行三次迭代,而不使用仅使用流的for循环。
您可以使用reduce
来计算单个Stream
管道中的3个和:
X sums = inputList.stream()
.reduce(new X(0,0,0),
(x,e) -> new X(x.getSumA()+e.getA(),
x.getSumB()+e.getB(),
x.getSumC()+e.getC()),
(x1,x2) -> new X(x1.getSumA()+x2.getSumA(),
x1.getSumB()+x2.getSumB(),
x1.getSumC()+x2.getSumC()));