gpt4 book ai didi

java - 使用 Java 8 Stream API 缩减 Map

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:02 27 4
gpt4 key购买 nike

我有一个以下形式的 map :

Map<Integer, Map<String,Double>> START

让 INNER 成为内部映射,即

Map<String,Double>

例如,我想在新 map 中缩小 START map

Map<Integer, Double> END

它们具有相同的键,但具有不同的值。特别是,对于每个键,我希望新的 Double 值是相应键的 INNER 映射中值的总和。

如何使用 JAVA 8 的 STREAM API 实现这一点?

谢谢大家。

编辑:示例 map 是

------------------------------
| | 2016-10-02 3.45 |
| ID1 | 2016-10-03 1.23 |
| | 2016-10-04 0.98 |
------------------------------
| | 2016-10-02 1.00 |
| ID2 | 2016-10-03 2.00 |
| | 2016-10-04 3.00 |
------------------------------

e 我想要一张像下面这样的新 map :

--------------------------------
| | |
| ID1 | SUM(3.45,1.23,0.98) |
| | |
--------------------------------
| | |
| ID2 | SUM(1.00,2.00,3.00) |
| | |
--------------------------------

最佳答案

它会为你工作

    Map<Integer, Double> collect = START.entrySet()
.stream()
.collect(
Collectors.toMap(
Map.Entry::getKey,
e -> e.getValue()
.values()
.stream()
.reduce(0d, (a, b) -> a + b)
)
);

关于java - 使用 Java 8 Stream API 缩减 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851350/

27 4 0