JDK8函数式接口之Predicate

简介: JDK8函数式接口之Predicate

写在前面


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表达式,你学会了吗?


相关文章
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
25 1
|
2月前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
3月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
3月前
|
Java Maven 容器
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
|
5月前
|
Java
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
58 1
|
5月前
|
Java
JDK 1.8 函数接口(收藏用)
JDK 1.8 函数接口(收藏用)
|
6月前
|
Java
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
|
6月前
|
Java 开发者
JDK 8:函数式接口的新篇章
JDK 8引入了函数式接口,这一新特性为Java开发者带来了巨大的便利。本文将深入探讨函数式接口的原理、优势以及如何在实际开发中应用这一特性。
|
6月前
|
Java 开发者
JDK 9新特性探秘:接口中的私有方法
本文旨在探讨Java Development Kit 9(JDK 9)为Java接口引入的新特性——私有方法。在JDK 9之前,接口只能包含公共的抽象方法和常量。然而,随着Java的不断发展,接口中需要更加灵活的方式来处理复杂性和代码重用。因此,JDK 9引入了私有方法,允许开发者在接口内部定义私有方法和私有静态方法,从而提高了代码的模块性和可维护性。本文将详细介绍这一新特性的使用方法、应用场景及其对Java编程的影响。
|
6月前
|
存储 Java 关系型数据库
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(二)
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(二)