常用函数式接口_Predicate

Java8在java.util.function包下预定义了大量的函数式接口供我们使用

我们重点来学习下面的4个接口:

1、Supplier接口

2、Consumer接口

3、Predicate接口

4、Function接口

 

Predicate,断定型接口

Predicate接口在java.util.function包下。该接口有一个泛型,即我们看到的。该接口有一个@FunctionalInterface注解,说明是函数式接口 该接口表示一个参数的布尔值函数,即该接口的作用通常是对参数进行判断的,返回一个布尔值

该接口里面有4个方法,分别是与and、或or、非not、test。如下。注意下面的'Predicate<? super T>‘指的是函数式接口

返回值类型方法作用
booleantest(T t)根据给定的参数计算此谓词
default Predicateand(Predicate<? super T> other)返回一个组合判断,表示短路逻辑的与
default Predicateor(Predicate<? super T> other)返回一个组合判断,表示短路逻辑的或
static Predicatenot(Predicate<? super T> target)返回一个逻辑的否定,表示逻辑非
default Predicatenegate()返回一个逻辑的否定,表示逻辑非
static PredicateisEqual(Object targetRef)返回一个谓词,根据Objects.equals(Object, Object)测试两个参数是否相等

 

常用函数式接口_Predicate的test和negate方法练习

 

常用函数式接口_Predicate的and和or方法练习

 

Predicate接口_筛选数据

练习: 1、String[] strArray={"张老三,16","李老四,17","王老五,20","小明,19","小红,18"}; 2、字符串数组中有多条信息,请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,并遍历ArrayList集合 3、同时满足如下要求:姓名长度大于2,年龄大于18

分析: 1、有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断 2、必须同时满足两个条件,所以可以使用and方法连接两个判断条件

 

Predicate接口_筛选数据的练习