1.Predicate接口的基本使用
java.util.function.Predicate<T>接口 对某种类型的数据进行判断,从而得到一个boolean值 Predicate接口中包含一个抽象方法 boolean test(T t); 用来对指定类型数据进行判断的方法 结果: 符合条件;返回true 不符合条件: 返回false
package Demo19;
import java.util.function.Predicate;
/*
java.util.function.Predicate<T>接口
对某种类型的数据进行判断,从而得到一个boolean值
Predicate接口中包含一个抽象方法
boolean test(T t); 用来对指定类型数据进行判断的方法
结果:
符合条件;返回true 不符合条件: 返回false
*/
public class Demo09Predicate {
/*
定义一个方法
参数传递一个String类型的字符串
传递一个Predicate接口,泛型使用String
使用Predictor中的方法test对字符串进行判断,并把判断的结果返回
*/
public static boolean checkString(String s , Predicate<String> pre){
return pre.test(s);
}
public static void main(String[] args) {
//定义一个字符串
String s = "abcde";
boolean b=checkString(s,(String str )->{
//对参数传递的字符串进行判断,判断字符串的长度是否大于五并返回
return str.length()>5;
});
System.out.println(b); //false
}
}
2.Predicate中的and方法
逻辑表达式:可以连接多个判断的条件 &&:与运算符,有false则false ||:或运算符,有true则true !:非 也叫取反运算符,非真则假非假则真 需求:判断一个字符串有两个判断条件: 1.字符串的长度是否大于五 2.判断字符串中是否包含a 要求两个条件必须同时满足,我们就可以使用&&运算符连接两个条件 Predicate接口中有一个方法:and 表示并且关系也可以用于联系两个判断条件 方法内部两个判断条件也是使用&&运算符连接起来的
public class Demo10Predicate {
/*
定义一个方法,方法的参数,传递一个字符串
传递两个Predicate接口
一个用于判断字符串的长度是否大于5
一个用于判断字符串中是否包含a
两个条件必须同时满足
*/
public static boolean checkString(String s, Predicate<String> pre01, Predicate<String> pre02){
//return pre01.test(s)&&pre02.test(s); //这里就是与输出true 或 false
return pre01.and(pre02).test(s); //与上面等价的
}
public static void main(String[] args) {
//定义一个字符串
String str = "abcdef";
//调用checkString方法,参数传递字符串和两个Lambda表达式
boolean b = checkString(str, (String s) -> {
//一个用于判断字符串的长度是否大于5
return s.length()>5;
}, (String s) -> {
//一个用于判断字符串中是否包含a
return s.contains("a");
});
System.out.println(b); //输出true 字符串大于五包含a true&&true=true
}
}
3.or
需求:判断一个字符串有两个判断条件: 1.字符串的长度是否大于五 2.判断字符串中是否包含a 满足一个条件即可
package Demo19;
import java.util.function.Predicate;
/*
需求:判断一个字符串有两个判断条件:
1.字符串的长度是否大于五
2.判断字符串中是否包含a
满足一个条件即可
*/
public class Demo11Predicate {
public static boolean checkString(String s, Predicate<String> pre01, Predicate<String> pre02){
return pre01.test(s)||pre02.test(s); //这里就是与输出true 或 false
//return pre01.or(pre02).test(s); //与上面等价的
}
public static void main(String[] args) {
//定义一个字符串
String str = "abc";
//调用checkString方法,参数传递字符串和两个Lambda表达式
boolean b = checkString(str, (String s) -> {
//一个用于判断字符串的长度是否大于5
return s.length()>5;
}, (String s) -> {
//一个用于判断字符串中是否包含a
return s.contains("a");
});
System.out.println(b); //输出true 字符串小于五包含a false||true=true
}
}
3.negate
需求: 判断一个字符串长度是否大于5 如果字符串长度大于5,返回false 字符串长度不大于5返回true 所以我们可以使用取反符号对判断的结果进行取反 Predicate方法中negate,也表示取反的意思
package Demo19;
import java.util.function.Predicate;
/*
需求:
判断一个字符串长度是否大于5
如果字符串长度大于5,返回false
字符串长度不大于5返回true
所以我们可以使用取反符号对判断的结果进行取反
Predicate方法中negate,也表示取反的意思
*/
public class Demo12Predicate {
public static boolean checkString(String s, Predicate<String> pre ){
//return !pre.test(s);
return pre.negate().test(s);//与上面代码作用相同
}
public static void main(String[] args) {
//定义一个字符串
String s = "ABCDEF";
//调用checkString方法,参数传递字符串和Lambda表达式
boolean b = checkString(s,(String str)->{
return s.length()>5;
});
System.out.println(b);//false
}
}