常用的函数式接口_Predicate接口:
java.util.function.predtcate<T>接口
作用:对某种数据类型的数据进行判断,结果返回一个boolean值
Predicate接口中包含一个抽象方法:
boolean test(T t):用来对指定数据类型数据进行判断的方法
结果:
符合条件,返回true
不符合条件,返回false
/** * 定义一个方法 * 参数传递一个Predicate接口,泛型使用String * 使用Predicate中的方法test对字符串进行判断,并把判断的结果返回 */ public static boolean checkString(String s, Predicate<String> pre){ return pre.test(s); } public static void main(String[] args) { //定义一个字符串 String s = "adcdef"; //调用checkString方法对字符串进行效验,参数传递字符串和Lambda表达式 // boolean b = checkString(s,(String str)->{ // //对参数传递的字符串进行判断,判断字符串的长度是否大于5,并把判断的结果返回 // return str.length()>5; // }); //优化Lambda表达式 boolean b = checkString(s,str->str.length()>5); System.out.println(b); }
常用的函数式接口_Predicate接口_默认方法and:
逻辑表达式:可以连接多个判断的条件
&&:与运算符,有false则false
//:或运算符,有true则true
!:非(取反)运算符,非真则假,非假则真
需求:判断一个字符串,有两个判断的条件
1.判断字符串的长度是否大于5
2.判断字符串中是否含a
两个条件必须同时满足,我们就可以使用&&运算符连接两个条件
Predicate接口中有一个方法and,表示并且关系也可以用于连续两个判断条件
default Predicate<T> and(Predicate<? super T> other){
Objects.requireNonNull(other)
return (t) ->this.test(t) && other.test(t);
}
方法内部的两个判断条件,也是使用&&运算符连接来的
/* 定义一个方法,方法的参数,传递一个字符串 传递两个Predicate接口 一个用于判断字符串的长度是否大于5 一个用于判断字符串中是否包含a 两个条件必须同时满足 */ public static boolean checkString(String s, Predicate<String> pre1,Predicate<String> pre2){ //return pre1.test(s) && pre2.test(s); return pre1.and(pre2).test(s); //等价于return pre1.test(s) && pre2.test(s); } public static void main(String[] args) { //定义一个字符串 String s = "abcdef"; //调用checkString方法,参数传递字符串和两个Lambda表达式 boolean b = checkString(s,(String str)->{ //判断字符串的长度是否大于5 return str.length()>5; },(String str)->{ //判断字符串是否包含a return str.contains("a"); }); System.out.println(b); }
标签:Predicate,判断,函数,接口,test,字符串,String From: https://www.cnblogs.com/hungui/p/16733449.html