【发布时间】:2021-07-29 09:04:13
【问题描述】:
我有一个List<MyObject>,这个列表包含数千个对象。我想通过recordNo 和year 过滤这个列表。如果有任何对象具有相同的recordNo 和year 值,我想总结它们的amount 和sum。
过滤列表并汇总值后,我想创建一个新的List<MyObject>,并且此列表不会包含任何重复的对象(recordNo 和 year)
MyObject 结构:
@Getter
@Setter
public class MyObject{
private Long recordNo;
private Integer year;
private BigDecimal amount;
private BigDecimal sum;
}
当前示例列表输出:
[
{
"recordNo": 10,
"year": 2021,
"amount": 10,
"sum": 100,
},
{
"recordNo": 10,
"year": 2021,
"amount": 20,
"sum": 200,
},
{
"recordNo": 10,
"year": 2020,
"amount": 20,
"sum": 100,
},
{
"recordNo": 10,
"year": 2020,
"amount": 5,
"sum": 20,
},
{
"recordNo": 11,
"year": 2021,
"amount": 10,
"sum": 200,
}
]
所需的列表输出:
[
{
"recordNo": 10,
"year": 2021,
"amount": 30,
"sum": 300,
},
{
"recordNo": 10,
"year": 2020,
"amount": 25,
"sum": 120,
},
{
"recordNo": 11,
"year": 2021,
"amount": 10,
"sum": 200,
}
]
创建所需列表输出的最佳方法是什么?
【问题讨论】: