我有一个Map<LocalDateTime, Set<Vote>> map = new HashMap<>();我必须计算票数并将其放入按 localDateTime 分组的新地图中。我不知道如何用流来做到这一点。我的返回值必须是Map<LocalDateTime, Integer>.如何在 Java 8 中使用流来做到这一点?
1 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
由于您已经有一个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()));
添加回答
举报
0/150
提交
取消