Predicate函数式接口

Posted 南蝶wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Predicate函数式接口相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 Predicate函数式接口

Predicate接口主要用于流的筛选,比如在filter方法中传入Predicate判断。

作为函数式接口,这里居然有三个default方法,一个static方法,子孙满堂!

Predicate函数式接口

正统的接口方法,就是boolean test(T t),接受一个泛型T,如果输入参数与谓词匹配,则返回true,否则返回false。

Predicate函数式接口

先来看看静态相等判断方法,static <T> Predicate<T> isEqual(Object targetRef)

这里判断对象是否相等,结合是否为空的处理,这里用了 Objects::isNull 和object.equals的方法。

Predicate函数式接口

再来看看默认or方法,default Predicate<T> or(Predicate<? super T> other)

返回一个组合谓词,表示此谓词与另一个谓词的短路逻辑OR。在评估组合谓词时,如果此谓词为true,则不评估其他谓词。

这里就要求如参不能为null。

Predicate函数式接口

default Predicate<T> negate()  返回表示此谓词的逻辑否定的谓词。

Predicate函数式接口

那么这个也很好理解了,就是与操作,default Predicate<T> and(Predicate<? super T> other)

Predicate函数式接口

洗个简单的使用demo:

Predicate函数式接口

输出:

Predicate函数式接口

还有IntPredicate,DoublePredicate,LongPredicate,比较特别一点的就是Bipredicate,有两个泛型类型参数

Predicate函数式接口

就像这样,是不是就容易理解多啦。

Predicate函数式接口

在流的很多方法中,都使用了Predicate接口作为参数判断!比如下面的 Collection.removeIf


葛之覃兮,施于中谷,维叶萋萋。

黄鸟于飞,集于灌木,其鸣喈喈。


以上是关于Predicate函数式接口的主要内容,如果未能解决你的问题,请参考以下文章

Java 常用函数式接口 —— Predicate接口

Predicate函数式接口

JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口

逐步走向响应式编程-常见函数式接口- Predicate<T>

Java 8 - Predicate和Consumer接口函数式编程

Java 8 - Predicate和Consumer接口函数式编程