【发布时间】:2019-05-18 22:23:00
【问题描述】:
我可以使用一个 lambda 表达式来完成所有逻辑吗?
boolean isTrue = myList.stream().anyMatch(m -> m.getName().equals("a");
if(isTrue) { do something }
else { do something }
【问题讨论】:
-
您提供的代码甚至无法编译。除此之外,您还不清楚您要达到的目标。
-
我想知道anyMatch之后可以继续lamda表达式吗?像 list.stream(),anyMatch(true).do(dosomething).orElse(dosomething);
-
anyMatch()返回一个原始的boolean,所以你显然不能继续 lambda 表达式。 -
您可以使用
filter(e -> /*condition*/).findAny().ifPresent(e -> /*consumer*/)作弊。但是,没有orElse。 -
在返回
boolean(Stream.anyMatch()要求)之前,lambda 几乎可以做任何你想做的事情——基于每个元素——。anyMatch()本身的最终结果必然超出作为其参数传递的 lambda 的范围。