有一个 Person 类
public Class Person{
private String name;
public Person(String name){
this.name = name;
}
//getter
}
有一个列表<Person
我们需要创建一个 Map<String, Integer> ,其中 key 是 Person 类的名称,value 是相同名称的数量。我想知道如何使用流来做到这一点。翼list.stream().collect(Collectors.toMap(...))
循环不是问题。
打开 Collectors.toMap() 方法的文档就足够了,一切都会变得清晰(你为什么不自己做呢?:))。
因此,除了 2-argument 选项:
Collectors.toMap还可以选择在重复键的情况下解决冲突:那么,要解决问题,理解名字第一次见面,名字个数=1就够了,当再次遇到相同的名字时(也就是键冲突),值应该增加乘以 1,然后我们得到以下函数 (lambdas)
valueMapper和mergeFunction:为此
keyMapper,获得名称同样容易:我希望你可以自己把它放在一起,但现在这个问题看起来像是一个学习任务:D