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); }
调用方法
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"); }); //优化Lambda表达式 System.out.println(b); }
使用and方法之后
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); }
默认方法or
需求:判断一个字符串,有两个判断的条件
1.判断字符串的长度是否大于5
2.判断字符串中是否包含a
满足一个条件即可,我们就可以使用||运算符连接两个条件。
Predicate接口中有一个方法or,表示或者关系,也可以用于连接两个判断条件
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.or(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"); }); //优化Lambda表达式 System.out.println(b); }
默认方法negate
需求:判断一个字符串的长度是否大于5
如果字符串的长度大于5,那么返回false
如果字符串的长度不大于5,那么返回true
所以我们可以使用取反符号!对判断的结果进行取反
Predicate接口中有一个方法negate,也表示取反的意思
default Predicate<T> negate(){ return (t) -> !test(t); }
/* 定义一个方法,方法的参数传递一个字符串 使用Predicate接口判断字符串的长度是否大于5 */ public static boolean checkString(String s, Predicate<String> pre1) { //return !pre1.test(s); return pre1.negate().test(s);//等效于return !pre1.test(s); } public static void main(String[] args) { //定义一个字符串 String s = "abcdef"; //调用checkString方法对字符串进行校验,参数传递字符串和两个Lambda表达式 boolean b = checkString(s, (String str) -> { //判断字符串的长度是否大于5 return str.length() > 5; }); //优化Lambda表达式 System.out.println(b); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix