我使用搜索的ConcurrentHashMap的是這樣的:Iambda表達編譯錯誤
map.search(1, (k, v) -> {
return v.size() > 10 ? k : null;
});
但是當我刪除括號它給了我編譯錯誤:
map.search(1, (k, v) ->
return v.size() > 10 ? return k : null;
);
我想刪除括號,因爲它是單lambda表達式中的語句。
更新:糾正錯字
我使用搜索的ConcurrentHashMap的是這樣的:Iambda表達編譯錯誤
map.search(1, (k, v) -> {
return v.size() > 10 ? k : null;
});
但是當我刪除括號它給了我編譯錯誤:
map.search(1, (k, v) ->
return v.size() > 10 ? return k : null;
);
我想刪除括號,因爲它是單lambda表達式中的語句。
更新:糾正錯字
return語句不是表達式,它是一個語句。在lambda表達式中,您必須將語句括在{}括號中。欲瞭解更多詳情,你可以在這裏學習: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax
由於有2條return語句,你可以有括號爲您發佈以上:
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
然後還刪除'返回',比照。 https://stackoverflow.com/questions/11145696/when-are-braces-optional-in-java-8-lambda-syntax。 – jensgram
試一下:' - > v.size()> 10? k:null' –
@jensgram是的確切是這個問題! – Vipin