简体   繁体   English

Iambda表达式编译错误

[英]Iambda expression compilation error

I am using search of ConcurrentHashMap like this: 我正在使用像这样的ConcurrentHashMap搜索:

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

But when I remove braces it gives me compilation error: 但是,当我删除括号时,会出现编译错误:

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

I want to remove braces since it is single statement in lambda expression. 我想删除括号,因为它是lambda表达式中的单个语句。

Update : corrected typo 更新:错别字

As there are 2 return statements, you can either have the braces as you posted above: 由于有2条return语句,因此您可以使用上面发布的括号:

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

Or you need to remove the other return: 或者您需要删除其他退货:

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

For further knowledge, you can visit the following link: 要了解更多信息,可以访问以下链接:

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

A return statement is not an expression , its a statement. return语句不是表达式,而是语句。 In lambda expression you must enclose statement in {} braces. 在lambda表达式中,必须将语句括在{}中。 For further details you can study here : https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax 有关更多详细信息,您可以在这里学习: https : //docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM