gpt4 book ai didi

java - 如何在 Java 8 中使用流将 EntrySet 拆分为映射

转载 作者:行者123 更新时间:2023-12-01 19:36:08 25 4
gpt4 key购买 nike

我有一个Map<LocalDateTime, Set<Vote>> map = new HashMap<>();

我必须计算票数并将其放入按 localDateTime 分组的新 map 中。我不知道如何用流来做到这一点。

我的返回值必须是Map<LocalDateTime, Integer> .

如何在 Java 8 中使用流来做到这一点?

谢谢

最佳答案

因为您已经有 Map<LocalDateTime,Set<Vote>>Vote实例已按 LocalDateTime 分组。您需要做的就是将每个 Set<Vote> 的投票值相加。 :

Map<LocalDateTime, Integer> voteSums = 
map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> e.getValue()
.stream()
.mapToInt(Vote::getVoteValue)
.sum()));

您应该在哪里替换 getVoteValue实际名称为Vote返回您想要求和的值的类方法。

或者如果您只是想知道有多少 Vote每个键都有实例,您可以编写:

Map<LocalDateTime, Integer> voteCounts = 
map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> e.getValue().size()));

关于java - 如何在 Java 8 中使用流将 EntrySet 拆分为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com