本文介绍了Lambda-如果有Match则执行某项操作,否则则执行某项操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Can I do this all logic with using one lambda expression?

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

if(isTrue) { do something }
else { do something }

推荐答案

由于添加了Java 9 Optional

Since Java 9 Optional class added

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

也可以使用filter(..).findAny()来返回Optional,而不是返回booleananyMatch(..).

Also instead of anyMatch(..) which returns boolean you can use filter(..).findAny() which returns Optional.

因此您可以编写类似的代码

So you can write code like

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")
    );

这篇关于Lambda-如果有Match则执行某项操作,否则则执行某项操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-10 07:46