Java 8 Map:如果找到匹配,则过滤值并抛出异常

Arp*_*t M 9 java lambda java-8

我正在尝试在Map中找到匹配的值,如果找到,我需要抛出IllegalArgumentException.我的代码如下:

final String stringToBeMatched = "someRandomString"; 

map.values()
   .stream()
   .filter(a -> stringToBeMatched == a.getField())
   .findAny()
   .ifPresent(a -> throw new IllegalArgumentException());
Run Code Online (Sandbox Code Playgroud)

我在令牌"throw"上遇到语法错误.我不确定我哪里出错了.

rge*_*man 16

甲拉姆达体可以是一个表达式或语句块.然而,

throw new IllegalArgumentException()
Run Code Online (Sandbox Code Playgroud)

是一个陈述,既不是.用支架围住它,使其成为一个块.

.ifPresent(a -> {throw new IllegalArgumentException(); } );
Run Code Online (Sandbox Code Playgroud)

对于您的下一个问题,请比较您的字符串值.equals,而不是==.