JDK8函数式接口之Predicate

191 阅读1分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

写在前面

JDK8 API提供了很多函数式接口,这些函数式接口可以被抽象成一个具体的方法,并且使其使用在Lambda表达式中,今天我们要来说的就是其中的Predicate函数接口。

Predicate

Predicate提供了一个抽象方法,test()方法。

test方法接收一个参数,返回一个布尔元素结果值。

test方法使用示例

如下代码:

public static void main(String[] args) {
    Predicate<String> predicate = s -> "字符串".equals(s);
    System.out.println(predicate.test("字符串"));
    System.out.println(predicate.test("字符串1"));
}

运行结果如下:

image.png

默认方法and方法

and方法是predicate一个默认方法,是一个类似于运算符的概念,利用这个方法,我们可以对predicate加入更多的条件,并且进行一些判断。

如下代码:

public static void main(String[] args) {
    Predicate<String> predicate = s -> "字符串".equals(s);
    predicate = predicate.and(s -> s.length() == 3);
    System.out.println(predicate.test("字符串"));
    System.out.println(predicate.test("字符串1"));
}

运行结果如下:

image.png

默认方法or方法

接着我们来介绍一个新的默认方法,or方法,不多解释了,直接看代码吧。

public static void main(String[] args) {
    Predicate<String> predicate = s -> "字符串".equals(s);
    predicate = predicate.or(s -> s.length() == 4);
    System.out.println(predicate.test("字符串"));
    System.out.println(predicate.test("字符串1"));
}

运行结果如下:

image.png

默认方法negate方法

最后一个默认方法了,negate方法,即取反结果,来看一下代码示例吧。

public static void main(String[] args) {
    Predicate<String> predicate = s -> "字符串".equals(s);
    predicate = predicate.or(s -> s.length() == 4);
    System.out.println(predicate.negate().test("字符串"));
    System.out.println(predicate.negate().test("字符串1"));
}

运行结果如下:

image.png

总结

今天学习的Predicate函数式接口主要是用来配合Lambda表达式,你学会了吗?