Predicate函数式接口
Posted 南蝶wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Predicate函数式接口相关的知识,希望对你有一定的参考价值。
Predicate接口主要用于流的筛选,比如在filter方法中传入Predicate判断。
作为函数式接口,这里居然有三个default方法,一个static方法,子孙满堂!
正统的接口方法,就是boolean test(T t),接受一个泛型T,如果输入参数与谓词匹配,则返回true,否则返回false。
先来看看静态相等判断方法,static <T> Predicate<T> isEqual(Object targetRef)
这里判断对象是否相等,结合是否为空的处理,这里用了 Objects::isNull 和object.equals的方法。
再来看看默认or方法,default Predicate<T> or(Predicate<? super T> other)
返回一个组合谓词,表示此谓词与另一个谓词的短路逻辑OR。在评估组合谓词时,如果此谓词为true,则不评估其他谓词。
这里就要求如参不能为null。
default Predicate<T> negate() 返回表示此谓词的逻辑否定的谓词。
那么这个也很好理解了,就是与操作,default Predicate<T> and(Predicate<? super T> other)
洗个简单的使用demo:
输出:
还有IntPredicate,DoublePredicate,LongPredicate,比较特别一点的就是Bipredicate,有两个泛型类型参数
就像这样,是不是就容易理解多啦。
在流的很多方法中,都使用了Predicate接口作为参数判断!比如下面的 Collection.removeIf
葛之覃兮,施于中谷,维叶萋萋。
黄鸟于飞,集于灌木,其鸣喈喈。
以上是关于Predicate函数式接口的主要内容,如果未能解决你的问题,请参考以下文章
JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口
逐步走向响应式编程-常见函数式接口- Predicate<T>