java - 使用 Java Stream API 按字段分组计算总和

标签 java stream java-stream

你有两个类:

Account: number: String, balance: Long
Transaction: uuid: String, sum: Long, account: Account

对于具有相应名称(getNumber()、getSum()、getAccount() 等)的所有字段,这两个类都有 getter。

我需要计算每个账户的交易总和,但不是按账户计算,而是按账户编号分组

我是这样写的:

Map<Account, Long> totalSumOfTransByEachAccount =
            transactions.stream()
                    .collect(Collectors.groupingBy(Transaction::getAccount, Collectors.reducing(0, Transaction::getSum, Long::sum)));

但我需要带有字符串键的映射 - Account.getNumber()

Map<String, Long> totalSumOfTransByEachAccount =
            transactions.stream()
                    .collect(Collectors.  ??????)

谁能帮帮我?

最佳答案

还有一个变体,我的决定:

 Collectors.groupingBy(t -> t.getAccount().getNumber(),
                    Collectors.reducing(0L, Transaction::getSum, Long::sum))

关于java - 使用 Java Stream API 按字段分组计算总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775578/

相关文章:

java - 使用特定字符串调用的测试方法

ffmpeg - 使用 ffmpeg 合并片段会导致音频出现小裂缝

c# - 如何创建可以转换流的流包装流

java - Collectors.toSet() 和 HashSet

Java 8 流条件处理

Java:将对象列表转换为另一个 HashMap 中的 HashMap

java - FutureTask 是如何进行异步计算的

java - 在运行时在 netbeans 中启用断言

java - Jena 库未将输出写入外部 RDF/XML 文件

c++ - 如何创建一个while循环,该循环继续循环直到在C++中输入了 'using streams'键?