相关疑难解决方法(0)

像Java一样用Java lambdas分组和汇总对象?

我有一个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)

我怎样才能做到这一点?

java lambda java-8 java-stream

37
推荐指数
4
解决办法
4万
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1