在 Java 8 中,你可以使用流的
collect
方法来分组并求和多个字段。
首先,需要定义一个
Collector
来收集和合并结果。这个
Collector
需要使用
Collectors.groupingBy
和
Collectors.summingXXX
方法来分组并求和多个字段。其中,
XXX
是你要求和的字段的类型。例如,如果你要对字符串字段求和,就使用
Collectors.summingInt
;如果你要对整数字段求和,就使用
Collectors.summingLong
;如果你要对浮点数字段求和,就使用
Collectors.summingDouble
。
然后,你可以在流上使用
collect
方法来应用这个
Collector
。
例如,假设你有一个名为
Item
的类,其中包含三个字段:
category
(字符串类型)、
quantity
(整数类型)和
price
(浮点类型)。现在你想要按
category
分组,并计算每组的
quantity
和
price
的总和。你可以使用以下代码实现这个功能:
Map<String, Double> result = items.stream()
.collect(Collectors.groupingBy(
Item::getCategory,
Collectors.summingDouble(Item::getPrice)
这段代码会对流中的所有项目按照 category
字段分组,并计算每组的 price
字段的总和。最终,它会返回