Predicate<T>:常用的四个方法
boolean test(T t):对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值
default Predicate<T>negate():返回一个逻辑的否定,对应逻辑非
default Predicate<T>and(Predicate other):返回一个组合判断,对应短路与
default Predicate<T>or(Predicate other):返回一个组合判断,对应短路或
Predicate<T>接口通常用于判断参数是否满足指定的条件
test、negate方法Demo
package Demo0512;
import java.util.function.Predicate;
public class PredicateDemo {
    public static void main(String[] args) {
        //调用方法判断,具体判断逻辑由Lambda表达式实现
        boolean b = cheakString("最美不过姑娘你", s -> s.length() > 5);
        System.out.println(b);
        boolean b1 = cheakString("最美不过姑娘你", s -> s.length() > 10);
        System.out.println(b1);
    }
    //定义一个方法用于判断给定的字符串是否符合要求
    private static boolean cheakString(String s, Predicate<String>pc){
        //返回正常的结果
        //return pc.test(s);
        //返回相反的结果
        return  pc.negate().test(s);
    }
}
default Predicate<T>and(Predicate other):返回一个组合判断,对应短路与
default Predicate<T>or(Predicate other):返回一个组合判断,对应短路或
Demo
package Demo0512;
import java.util.function.Predicate;
public class PredicateDemo01 {
    public static void main(String[] args) {
        //调用方法
        boolean b = cheakString("最美不过姑娘你", s -> s.length() > 5, s -> s.length() > 15);
        System.out.println(b);
    }
    //定义一个方法,实现同一个字符串给出两个不同的判断条件,最后把这两个条件的结果进行逻辑与、逻辑或操作并作为最终结果
    private static boolean cheakString(String s, Predicate<String>pc,Predicate<String>pc1){
       // return pc.and(pc1).test(s);//进行逻辑与操作,一假全假
        return pc.or(pc1).test(s);//进行逻辑与操作,一真为真
    }
}
练习:
需求:
1.定义一个字符串数组String [] name={};
2.通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,并遍历
3.字符串需要同时满足两个条件:姓名长度>2,年龄大于20
package Demo0512;
import java.util.ArrayList;
import java.util.function.Predicate;
public class PredicateDemo02 {
    public static void main(String[] args) {
        //定义一个数组
        String[]strarray={"张三疯,45","李四疯,21","王五,19"};
        //调用方法
        ArrayList<String> array = myFilter(strarray, s -> s.split(",")[0].length() > 2, s -> Integer.parseInt(s.split(",")[1]) > 20);
        //遍历数组
        for (String s:array){
            System.out.println(s);
        }
    }
    //定义一个方法,通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中
    private static ArrayList<String>myFilter( String[]strarray, Predicate<String>pc,Predicate<String>pc1){
        //定义一个数组
        ArrayList<String>array=new ArrayList<String>();
        //遍历数组
        for (String str:strarray){
            if (pc.and(pc1).test(str)){
                array.add(str);
            }
        }
        return array;
    }
}
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号