Lambda - 如果有匹配做某事或其他做某事

Bil*_*ğlu 0 java lambda java-8

我可以使用一个 lambda 表达式来完成所有逻辑吗?

boolean isTrue = myList.stream().anyMatch(m -> m.getName().equals("a");         

if(isTrue) { do something } 
else { do something }
Run Code Online (Sandbox Code Playgroud)

Psh*_*emo 5

由于 Java 9Optional类添加

public void ifPresentOrElse?(Consumer<? super T> action, Runnable emptyAction)

此外anyMatch(..)boolean您可以使用filter(..).findAny()which returns代替which returns Optional

所以你可以写这样的代码

yourStream
    .filter(..)
    .findAny() //returns Optional
    .ifPresentOrElse(
        // action when value exists 
        value -> System.out.println("There was a value "+value),
        // action when there is no value
        () -> System.out.println("No value found")
    );
Run Code Online (Sandbox Code Playgroud)