这个问题与jOO没有直接关系,而是与您对JDK标准的使用有关
Collector
产生方法名称指示的双精度:
Collectors.summarizingDouble(t -> t.x)
j自带一套
收藏家
建筑空气污染指数
org.jooq.lambda.Agg
.在你的情况下,你想使用
Agg.sum(Function)
.
显然,换个班
A
首先:
class A {
final int w;
final BigDecimal x;
final int y;
final int z;
...
}
然后:
Map<
Tuple2<Integer, Integer>,
Optional<BigDecimal>
> map =
Seq.of(
new A(1, new BigDecimal("1.01"), 1, 1),
new A(1, new BigDecimal("2.09"), 3, 1),
new A(1, new BigDecimal("8"), 6, 1),
new A(2, new BigDecimal("119"), 7, 2),
new A(1, new BigDecimal("3.01"), 4, 1),
new A(1, new BigDecimal("4"), 4, 1),
new A(1, new BigDecimal("5"), 5, 1))
.groupBy(
t -> tuple(t.z, t.w),
Agg.sum(t -> t.x)
);
map.entrySet().forEach(t-> {
System.out.println(String.format("w=%s, z=%s, sumX=%s", t.getKey().v1, t.getKey().v2,
t.getValue().orElse(BigDecimal.ZERO)));
});