4 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以修改您的 Test 類以包含添加方法:
public class Test {
private int a;
private int b;
private int c;
//...
public void add(Test o) {
this.a += o.getA();
this.b += o.getB();
this.c += o.getC();
//...
}
// setters and getters...
}
那么你的求和函數(shù)可以如下所示:
public Test summation(Collection<Test> testCollection) {
Test sum = new Test();
for(Test test : testCollection) {
sum.add(test);
}
return sum;
}

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
我會(huì)將其分解為幾個(gè)子問(wèn)題:將一個(gè)測(cè)試對(duì)象添加到另一個(gè)測(cè)試對(duì)象,然后總結(jié)列表。
對(duì)于第一個(gè)問(wèn)題,您可以向 Test 類添加一個(gè)方法,該方法將兩個(gè)測(cè)試對(duì)象相加并返回一個(gè)包含總和的新 Test 對(duì)象。
public class Test {
...
public Test add(Test testToAdd){
Test result = new Test();
result.setA(a + testToAdd.getA());
...
result.setG(g + testToAdd.getG());
return result;
}
}
然后你可以在求和循環(huán)中調(diào)用它:
List<Test> tests = testRepository.findAllTest();
Test testTotal = new Test();
for (Test test: tests) {
testTotal = testTotal.add(test);
}
另一個(gè)好處是可以更立即清楚地了解循環(huán)正在做什么。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
要使用以下命令向現(xiàn)有答案添加另一種類似的方法Stream.reduce:
向您的測(cè)試類添加一個(gè)無(wú)參數(shù)構(gòu)造函數(shù)(如果您還沒(méi)有):
private Test() {
this(0,0,0,0,0,0,0);
}
將方法 addAttributes 添加到您的測(cè)試類
public Test addAttributes(Test other){
this.a += other.a;
this.b += other.b;
this.c += other.c;
this.d += other.d;
//....
return this;
}
然后,您可以通過(guò)執(zhí)行以下操作來(lái)減少列表:
Test result = tests.stream().reduce(new Test(), (t1,t2) -> t1.addAttributes(t2));

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
在你的類中寫一個(gè)add(Test other)方法Test:
public void add(Test other) {
this.a += other.getA();
this.b += other.getB();
// ...
this.g += other.getG();
}
然后,使用它:
Test test = new Test();
List<Test> allTests = testRepository.findAllTest();
allTests.forEach(individualTest -> individualTest.add(test));
return test;
添加回答
舉報(bào)