概述
方法名 | 方法说明 |
---|---|
default Predicate< T > and(Predicate<? super T> other) | 返回一个组合的谓词,表示该谓词与另一个谓词的短路逻辑AND。 |
static < T > Predicate< T > isEqual(Object targetRef) | 返回根据 Objects.equals(Object, Object)测试两个参数是否相等的 谓词 。 |
default Predicate< T > negate() | 返回表示此谓词的逻辑否定的谓词。 |
default Predicate< T > or(Predicate<? super T> other) | 返回一个组合的谓词,表示该谓词与另一个谓词的短路逻辑或。 |
boolean test(T t) | 在给定的参数上评估这个谓词。 |
代码内容讲解
定义preddicateDemo类
package Demo;
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
System.out.println(checkString(("iKun"),(s)->s.length()<6));// 对一个参数的处理
//用lambda表达式写
System.out.println(checkString(("iKun"),(s)->s.length()<6,(s1)->s1.length()<2));// 对两个参数的处理
}
//判定字符串是否满足要求
private static boolean checkString(String str, Predicate<String> p1) {
return p1.test(str);
}
//同一个字符串给出两个不同的判断条件,最后把这两个判断的结果做逻辑与运算的结果作为最终的结果
private static boolean checkString(String str, Predicate<String> p1,Predicate<String> p2) {
// return p1.and(p2).test(str);//与
return p1.or(p2).test(str);//或
}
}
输出的内容:
true
true
以例题形式讲解
- 练习:
String[] strArray={“iKun,27”,“鸡哥,7”,“小黑子,22”,“坤坤,24”}- 字符串数组中有多条信息,请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,并遍历ArrayList集合
- 同时满足如下要求:姓名长度小于3;年龄小于8
- 分析:
- 有两个判断条件,所以需要使用两个predicate接口,对条件进行判断
- 必须同时满足两个条件,所以可以使用and方法连接两个判断条件
定义PredicateDemo类
package Demo;
import java.util.ArrayList;
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
String[] strArray={"iKun,27","鸡哥,7","小黑子,22","坤坤,24"};
method(strArray,str1->str1.split(",")[0].length()<3,str1->Integer.parseInt(str1.split(",")[1])<8);
}
//定义method方法
private static void method(String[] s,Predicate<String> p1,Predicate<String> p2){
ArrayList<String> al = new ArrayList<String>();
for (String s1 :s){
if (p1.and(p2).test(s1)){
al.add(s1);
}
}
for (String a:al){
System.out.print("满足条件的内容为:"+a);
}
}
}
输出的内容为:
满足条件的内容为:鸡哥,7