4 回答
TA贡献1858条经验 获得超8个赞
您可以修改您的 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...
}
那么你的求和函数可以如下所示:
public Test summation(Collection<Test> testCollection) {
Test sum = new Test();
for(Test test : testCollection) {
sum.add(test);
}
return sum;
}
TA贡献1810条经验 获得超4个赞
我会将其分解为几个子问题:将一个测试对象添加到另一个测试对象,然后总结列表。
对于第一个问题,您可以向 Test 类添加一个方法,该方法将两个测试对象相加并返回一个包含总和的新 Test 对象。
public class Test {
...
public Test add(Test testToAdd){
Test result = new Test();
result.setA(a + testToAdd.getA());
...
result.setG(g + testToAdd.getG());
return result;
}
}
然后你可以在求和循环中调用它:
List<Test> tests = testRepository.findAllTest();
Test testTotal = new Test();
for (Test test: tests) {
testTotal = testTotal.add(test);
}
另一个好处是可以更立即清楚地了解循环正在做什么。
TA贡献1860条经验 获得超8个赞
要使用以下命令向现有答案添加另一种类似的方法Stream.reduce:
向您的测试类添加一个无参数构造函数(如果您还没有):
private Test() {
this(0,0,0,0,0,0,0);
}
将方法 addAttributes 添加到您的测试类
public Test addAttributes(Test other){
this.a += other.a;
this.b += other.b;
this.c += other.c;
this.d += other.d;
//....
return this;
}
然后,您可以通过执行以下操作来减少列表:
Test result = tests.stream().reduce(new Test(), (t1,t2) -> t1.addAttributes(t2));
TA贡献1805条经验 获得超10个赞
在你的类中写一个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;
添加回答
举报