は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);
});
カスタムコレクタをしたい、見て:アキュムレータと原子、これらの2の間の選択は、別の質問ですhttp://stackoverflow.com/questions/37187541/java-8-stream-add-elements-to-list-and-sum/37188002#37188002 – Tunaki
ハックの弱点は何ですか?それは素敵なコード行が少ないようです。 –
あなたはそれを言った...それはハックだ。並列に実行すると、 '+ ='のように '++ 'が[アトミックな操作ではありません](http://stackoverflow.com/questions/25168062/why-is-i)ので正しい出力が得られない可能性があります-not-atomic)。 – Tunaki