gpt4 book ai didi

java8流求和倍数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:19 26 4
gpt4 key购买 nike

我很好奇,如何在 java8 流中求和多个变量。

Integer wCPU = 0;
Double wnetwork = 0.0;
Double wMem = 0.0;

this.slaContractList.forEach(sla -> {
wCPU += sla.getNumberOfCPUs();
wnetwork += sla.getNetworkBandwith();
wMem += sla.getMemory();
});

但是,这不会编译,因为 lambda 表达式中的变量应该是最终的。

最佳答案

假设 slaContractList 是一个 SlaContract 对象的列表,并且它有构造函数 SlaContract(numberOfCPUs, networkBandwith, memory) 你可以:

SlaContract sumContract = slaContractList.stream()
.reduce(new SlaContract(0, 0.0, 0.0), (sla1, sla2) -> {
return new SlaContract(sla1.getNumberOfCPUs() + sla2.getNumberOfCPUs(), sla1.getworkBandwith() + sla2.getworkBandwith(), sla1.getMemory() + sla2.getMemory());
});

Double wnetwork = sumContract.getworkBandwith();
Double wMem = sumContract.getMemory();
Integer wCPU = sumContract.getNumberOfCPUs();

相同的解决方案,但对于简单类:

Point sumPoint = pointsList.stream()
.reduce(new Point(0, 0), (p1, p2) -> {
return new Point(p1.x + p2.x, p1.y + p2.y);
});

关于java8流求和倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567935/

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