Java使用lambda表达式生成流tomap时出错
当我试图编译这行代码时:Java使用lambda表达式生成流tomap时出错,java,lambda,casting,java-8,java-stream,Java,Lambda,Casting,Java 8,Java Stream,当我试图编译这行代码时: public Map<String,Long>countBranchesPerMunicipality(){ return mappamun.values().stream() .collect(toMap(m->m.getName() , m->m.getBranches().size())); } public MapcountBranchesPerMunicipality(){ 返回mappamun.va
public Map<String,Long>countBranchesPerMunicipality(){
return mappamun.values().stream()
.collect(toMap(m->m.getName() , m->m.getBranches().size()));
}
public MapcountBranchesPerMunicipality(){
返回mappamun.values().stream()
.collect(toMap(m->m.getName(),m->m.getBranchs().size());
}
它给了我一个错误:
无法从Map
转换为Map
有人能给我解释一下原因吗?这个getBranchs()
方法很可能返回一个Collection
实例,而Collection.size()
返回的是int
而不是long
因此,您应该将方法的返回类型从
Map<String,Long>
Map
致:
Map
当然m.getName()
应该返回一个字符串
int size();
它是列表扩展集合所返回的内容。自动装箱将int
s转换为Integer
s,但不会转换为Long
s。这就是为什么会出现编译错误
有两种可能的选择:
将返回类型更改为Map
(首选)李>
将大小强制转换为long
:(long)m.getBranchs().size()
什么类型有mappamun
?你能给我一个答案吗?我怎么能在那条小溪里投到很长的距离?感谢you@SamuraiJack,你为什么不考虑第二个选项?因为这是学校的练习,我不能改变地图的类型。你能把它添加到问题中吗?我们可以找到更好的解决办法。无论如何,演员阵容是(long)m.getBranchs().size()
int size();