gpt4 book ai didi

java - 使用流收集 HashMap 中的事件

转载 作者:行者123 更新时间:2023-11-29 06:49:23 26 4
gpt4 key购买 nike

我有一个练习要解决。我有一个 Fox 类,它有名称和颜色字段。我的练习是按颜色找出狐狸出现的频率。

因此我创建了一个 HashMap,其中 String 属性是狐狸的名字,Integer 是事件本身:

    Map<String, Integer> freq = new HashMap<>();

完成之后,我一直在尝试用流编写代码,但我很难做到这一点。我写了这样的东西:

    foxes.stream()
.map(Fox::getColor)
.forEach()
//...(continued later on);

,其中 foxes 是一个列表。

我的问题主要出在语法上。我想做一些事情,如果颜色没有出现,那么

    freq.put(Fox::getName, 1)

其他

    freq.replace(Fox::getName, freq.get(Fox::getName) + 1)

我应该怎样把它放在一起?

最佳答案

我不建议继续使用您的方法,因为收集器中已经内置了一个收集器,即 groupingBy收集器 counting()作为下游:

 Map<String, Long> result = foxes.stream()
.collect(Collectors.groupingBy(Fox::getName, Collectors.counting()));

这是通过“名称”找到频率,同样,您可以通过更改分类函数来通过颜色找到频率。

foxes.stream()
.collect(Collectors.groupingBy(Fox::getColor, Collectors.counting()));

关于java - 使用流收集 HashMap 中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54044426/

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