在 Java 8 中,可以使用 Stream API 的
groupingBy
和
summingDouble
方法来对流中的元素进行分组并求和。
例如,假设你有一个名为
Transaction
的类,其中包含两个字段:
type
和
amount
。现在你想要按照
type
对交易进行分组,并将每组中的
amount
求和。可以这样做:
Map<String, Double> result = transactions.stream()
.collect(Collectors.groupingBy(Transaction::getType,
Collectors.summingDouble(Transaction::getAmount)));
如果你想要按照多个字段进行分组并求和,可以使用多级分组。例如,假设你还有一个名为 currency
的字段,想要按照 type
和 currency
分别进行分组并求和,可以这样做:
Map<String, Map<String, Double>> result = transactions.stream()
.collect(Collectors.groupingBy(Transaction::getType,
Collectors.groupingBy(Transaction::getCurrency,
Collectors.summingDouble(Transaction::getAmount))));
这将返回一个映射,其中键是交易类型,值是另一个映射,其中键是货币类型,值是该类型和货币的交易总额。
希望这些信息能帮到您。