java列表中每个数字实体的求和

00jrzges  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(133)

我有一个java列表,它包含3行。它看起来像下面:

"InputForD3" :[
{"cashvalue":100,"cashInput":500,"profit":400},
{"cashvalue":100,"cashInput":500,"profit":400},
{"cashvalue":100,"cashInput":500,"profit":400}
]

现在,我想在每个实体级别上都有一个总结,并将其作为一个对象进行维护,如下所示

"InputForD3" :[
    {"cashvalue":300,"cashInput":1500,"profit":1200}
]

我被困在这,不能想到一个解决方案-如何处理?

unftdfkk

unftdfkk1#

因为你没有提供代码,所以很难说你在哪里卡住了。
但通常,您可以迭代列表并分别对每个属性求和,然后使用收集的总和构造结果对象。
这里的链接为灵感如何你可以总和的数字https://www.baeldung.com/java-stream-sum

7cwmlq89

7cwmlq892#

System.out.println("Summation of InputForD3 profit: "+List.stream().mapToInt(o->o.getProfit()).sum());
System.out.println("Summation of InputForD3 cash: "+List.stream().mapToInt(o->o.getCash()).sum());
System.out.println("Summation of InputForD3 cashInflow: "+List.stream().mapToInt(o->o.getCashInflow()).sum());

这就是我一直在寻找的,大家干杯。

iibxawm4

iibxawm43#

也可以使用reduce()函数:

public class TripleInt {
    int one;
    int two;
    int three;
}

    TripleInt tripleInt1 = new TripleInt(100,100,100);
    TripleInt tripleInt2 = new TripleInt(200,200,200);
    TripleInt tripleInt3 = new TripleInt(300,300,300);

   TripleInt reduce = list.stream().reduce(new TripleInt(0, 0, 0), (curr, temp) -> {
        return new TripleInt(curr.getOne() + temp.getOne(), curr.getTwo() + temp.getTwo(), curr.getThree() + temp.getThree());
    });

    System.out.println(reduce); //TripleInt(one=600, two=600, three=600)

相关问题