Iambda表达式编译错误

时间:2017-08-08 06:22:23

标签: java lambda concurrenthashmap

我正在使用ConcurrentHashMap搜索:

map.search(1, (k, v) -> {  
  return v.size() > 10 ? k : null;
});

但是当我删除大括号时,它会给我编译错误:

map.search(1, (k, v) -> 
  return v.size() > 10 ? return k : null;
);

我想删除大括号,因为它是lambda表达式中的单个语句。

更新:更正错误

2 个答案:

答案 0 :(得分:1)

由于有2个返回语句,您可以使用上面发布的大括号:

map.search(1, (k, v) -> {  
return v.size() > 10 ? return k : null;
});

或者你需要删除其他回报:

map.search(1, (k, v) -> {  
return v.size() > 10 ? k : null;
});

如需进一步了解,请访问以下链接:

  

https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax

答案 1 :(得分:1)

return语句不是表达式,而是一个语句。在lambda表达式中,您必须在{}括号中包含语句。有关详细信息,请在此处学习: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax