亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對列表中的所有屬性值求和

對列表中的所有屬性值求和

MMMHUHU 2023-08-04 15:29:56
我有一個具有多個整數屬性的類,如下所示:public class Test {    private Integer a;    private Integer b;    private Integer c;    private Integer d;    private Integer e;    private Integer f;    private Integer g;}因此,我得到了一個包含很多寄存器的類的列表,并且我必須單獨求和該列表的所有屬性。然后我做了類似的事情:List<Test> tests = testRepository.findAllTest();Test test = new Test();for (Test testList: tests) {    test.setA(test.getA + testList.getA);    test.setB(test.getB + testList.getB);    test.setC(test.getC + testList.getC);    test.setD(test.getD + testList.getD);    test.setE(test.getE + testList.getE);    test.setF(test.getF + testList.getF);    test.setG(test.getG + testList.getG);} return test;這個實現工作正常,但我現在想是否有一種更簡單的方法來做到這一點,清理這段代碼并使其變得簡單
查看完整描述

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;

}


查看完整回答
反對 回復 2023-08-04
?
慕萊塢森

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);

}

另一個好處是可以更立即清楚地了解循環正在做什么。


查看完整回答
反對 回復 2023-08-04
?
桃花長相依

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));


查看完整回答
反對 回復 2023-08-04
?
holdtom

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;


查看完整回答
反對 回復 2023-08-04
  • 4 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號