目前,我正面临以下数据集。我的目标是通过前两列获得 Column4 组的最新总和。
// Column5 = version
new Foo(1, "bbb", "cccc", 111, 0)
new Foo(1, "bbb", "cccc", 234, 1) // latest
new Foo(1, "bbb", "dddd", 111, 0)
new Foo(1, "bbb", "dddd", 112, 1)
new Foo(1, "bbb", "dddd", 113, 2)
new Foo(1, "bbb", "dddd", 114, 3) // latest
new Foo(1, "xxx", "cccc", 111, 0) // latest
new Foo(2, "xxx", "yyyy", 0, 0)
new Foo(2, "xxx", "yyyy", 1, 1) // latest
...
我试过的是
// key: Column1, key: Column2, value: latest sum of Column4
Map<Long, Map<String, Integer>> fooMap = fooList.stream().collect(
Collectors.groupingBy(Foo::getColumn1, Collectors.groupingBy(Foo::getColumn2,
Collectors.collectingAndThen(????))));
无论????
我尝试过的部分Collectors.groupingBy
,,Collectors.maxBy
Collectors.summingInt
但这总是错误的。
我理想的地图应该是这样的:
1->bbb->348
, 1->xxx->111
, 2->xxx->1
.
请帮助让我知道是否需要任何补品。谢谢。