我有一个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/