我有一个Foo包含这些字段的课程:
id:int/name; String/targetCost:BigDecimal/actualCost:BigDecimal
我得到了这个类的对象的arraylist.例如:
new Foo(1, "P1", 300, 400),
new Foo(2, "P2", 600, 400),
new Foo(3, "P3", 30, 20),
new Foo(3, "P3", 70, 20),
new Foo(1, "P1", 360, 40),
new Foo(4, "P4", 320, 200),
new Foo(4, "P4", 500, 900)
Run Code Online (Sandbox Code Playgroud)
我想通过创建"targetCost"和"actualCost"的总和并将"行"分组来转换这些值,例如
new Foo(1, "P1", 660, 440),
new Foo(2, "P2", 600, 400),
new Foo(3, "P3", 100, 40),
new Foo(4, "P4", 820, 1100)
Run Code Online (Sandbox Code Playgroud)
我现在写的:
data.stream()
.???
.collect(Collectors.groupingBy(PlannedProjectPOJO::getId));
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?