Java 使用lambda表达式代替实现'if else'

Java 中,使用 lambda 表达式可以简化某些场景下的 if-else 逻辑。虽然 lambda 表达式并不能完全替代所有的 if-else 语句,但在某些情况下,可以使用函数式编程的方式实现类似的逻辑。本文主要介绍Java中,使用lambda表达式实现if else条件判断的方法代码。

1、自己写代码实现

1)return this的实现

public MyClass ifExist(Consumer<Element> consumer) {
if (exist()) {
consumer.accept(this);
}
return this;
}
public MyClass ifNotExist(Consumer<Element> consumer) {
if (!exist()) {
consumer.accept(this);
}
return this;
}

调用方法

element.ifExist(el -> {
    //do something
})
.ifNotExist(el -> {
    //do something else
});

2)返回中间类型的实现

interface Else<T>
{
    public void otherwise(Consumer<T> consumer); // 'else' is a keyword
}
class DefaultElse<T> implements Else<T>
{
    private final T item;
    DefaultElse(final T item) { this.item = item; }
    public void otherwise(Consumer<T> consumer)
    {
        consumer.accept(item);
    }
}
class NoopElse<T> implements Else<T>
{
    public void otherwise(Consumer<T> consumer) { }
}
public Else<MyClass> ifExist(Consumer<Element> consumer) {
    if (exist()) {
        consumer.accept(this);
        return new NoopElse<>();
    }
    return new DefaultElse<>(this);
}

调用方法

element.ifExist(el -> {
    //do something
})
.otherwise(el -> {
    //do something else
});

2、使用Java中方法实现

1)Java 8中方法

import java.util.Optional;

public class Main {

    public static void main(String[] args) {
        Elem defaultElem = new Elem("默认元素");

        // 创建一个包含值的 Optional
        Optional<Elem> element = Optional.of(new Elem("实际元素"));

        // 使用 ifPresent 在值存在时执行某个操作
        element.ifPresent(el -> System.out.println("存在: " + el));

        // 使用 orElse 获取值(如果存在),如果不存在则返回一个默认值
        System.out.println(element.orElse(defaultElem));

        // 创建一个空的 Optional
        Optional<Elem> emptyElement = Optional.empty();

        // 检查在空的 Optional 上的行为
        emptyElement.ifPresent(el -> System.out.println("存在: " + el)); // 这行不会打印任何内容
        System.out.println(emptyElement.orElse(defaultElem)); // 这行会打印默认元素
    }
}

class Elem {
    private String name;

    public Elem(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }
}

2)Java 9中方法

import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含值的 Optional
        Optional<String> optionalWithValue = Optional.of("Hello World");

        // 使用 ifPresentOrElse 方法,如果值存在则打印 "Present: Hello World",否则打印 "Not present"
        optionalWithValue.ifPresentOrElse(
            el -> System.out.println("Present: " + el),
            () -> System.out.println("Not present")
        );

        // 创建一个空的 Optional
        Optional<String> emptyOptional = Optional.empty();

        // 使用 ifPresentOrElse 方法,如果值存在则打印 "Present: ...",否则打印 "Not present"
        emptyOptional.ifPresentOrElse(
            el -> System.out.println("Present: " + el),
            () -> System.out.println("Not present")
        );
    }
}

推荐阅读
cjavapy编程之路首页