【发布时间】:2021-04-08 08:16:45
【问题描述】:
.forEach((k,v) -> {v != 1 ? k=k + "s" : k=k;})
我想对Map<String, Double> 的每个元素执行一个操作。如果该值不是 1,则将字母“s”附加到键。如果值为 1,则不执行任何操作(或仅将键分配给键)。所以当 value 不是 1 并且 key 是“Car”时,追加“s”(“Cars”)。
但我得到了错误:
不兼容的类型:lambda 表达式中不兼容的参数类型
我对 lambda 表达式做错了什么?
【问题讨论】:
-
您应该使用 if/else 语句而不是三元运算符,或者将其重构为
k = v != 1 ? k + "s" : k。无论如何,这不会做任何事情,因为您不能改变 Map 上的键。我也没有收到您声称的错误。如果要编辑键,请创建一个新地图并将元素附加到该地图。 -
您显示的短 sn-p 甚至无法编译。而且您显示的错误不是原因。您能否提供足够的代码以可靠地实际重现该示例?
标签: java dictionary lambda foreach