gpt4 book ai didi

Java groupingBy : sum multiple fields

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:40 25 4
gpt4 key购买 nike

这个问题是对帖子的扩展:Java 8 groupingby with returning multiple field .

同样的问题,如何返回一个Customer的列表?例如,它应该返回:

Customer("A",4500,6500)
Customer("B",3000,3500)
Customer("C",4000,4500)

最佳答案

使用以下代码:

Map<String, Customer> retObj =
listCust.stream()
.collect(Collectors.groupingBy(Customer::getName,
Collector.of(
Customer::new,
(c1, c2) -> {
c1.setName(c2.getName());
c1.setTotal(c1.getTotal() + c2.getTotal());
c1.setBalance(c1.getBalance() + c2.getBalance());
},
(c3, c4) -> {
c3.setTotal(c3.getTotal() + c4.getTotal());
c3.setBalance(c3.getBalance() + c4.getBalance());
return c3;
})));

System.out.println(retObj);
System.out.println(retObj.values()); //If you want only the list of all Customers

输出:

{
A=Customer [name=A, total=4500.0, balance=6500.0],
B=Customer [name=B, total=3000.0, balance=3500.0],
C=Customer [name=C, total=4000.0, balance=4500.0]
}

关于Java groupingBy : sum multiple fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51452737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com