Java 常用函数式接口案例之Predicate接口

1.Predicate接口说明
java.util.function.PredicateT接口
作用:对某种数据类型的数据进行判断,结果返回一个boolean
Predicate接口中包含了一个抽象方法
     boolean test(T t);应用该方法对某种数据类型的数据进行判断,符合条件则返回true,不符合则返回false
默认方法
     (1)and();与运算,判断一个字符串中是否既含有a,又含有b;
         源码:
         defau<  PredicateT and(Predicate? super T other) {
            Objects.requireNonNull(other);
            return (t) - test(t)  other.test(t);
         }
     (2)or();或运算
         源码:
         defau<  PredicateT or(Predicate? super T other) {
             Objects.requireNonNull(other);
              return (t) - test(t) || other.test(t);
         }
     (3)negate();取反运算
         源码:
         defau<  PredicateT negate() {
             return (t) - !test(t);
         }
案例1:
    /*
    定义一个方法,参数传递String类型的字符串,传递一个Predicate接口,泛型使用String
    使用该接口中的test方法对字符串进行判断,并将判断结果返回
     */
    public static boolean checkString(String str, PredicateString pre){
        return pre.test(str);
    }

    public static void main(String[] args) {
        String str = "AA";
        *//*boolean resu<  = checkString(str, new PredicateString() {
            @Override
            public boolean test(String s) {
                return s.len >h()5;
            }
        });*/
        boolean resu<  = checkString(str,s - s.len >h()5);
        System.out.println(resu< );
    }
案例2:
//判断一个字符串是否既含有a,长度又大于5
    public static boolean method(String str, PredicateString pre1,PredicateString pre2){
        //return pre1.test(str)  pre2.test(str);
        return pre1.and(pre2).test(str);
    }

    public static void main(String[] args) {
        String str="axwertggwhwt";
      /*  boolean resu<  = method(str, new PredicateString() {
                    @Override
                    public boolean test(String s) {
                        return str.contains("a");
                    }
                },
                new PredicateString() {
                    @Override
                    public boolean test(String s) {
                        return str.len >h()5;
                    }
         });*/
        boolean resu<  = method(str,s-str.contains("z"),s-str.len >h()5);
        System.out.println(resu< );
    }
案例3:
    //判断一个字符串的长度是否大于5,大于返回false,否则返回true
    public static boolean method(String str, PredicateString pre){
        //return !pre.test(str);
        return pre.negate().test(str);
    }

    public static void main(String[] args) {
        String str = "AA";
        boolean resu<  = method(str,s - s.len >h()5);
        System.out.println(resu< );
    }
案例4:
//判断一个字符串的姓名长度是否大于4,且性别为女,并将符合条件的字符串存入ArrayList中
    public static boolean method(String strs, PredicateString pre1, PredicateString pre2){
        return pre1.and(pre2).test(strs);
    }

    public static void main(String[] args) {
        String[] arrs = {"AAAAA,男","BBBBBB,女","CC,男","DDDDDDD,女"};
        ArrayListString list = new ArrayList();
        for (String arr : arrs) {
            boolean resu<  = method(arr,s-s.split(",")[0].len >h()4,s-s.split(",")[1].equals("女"));
            if(resu< ){
                list.add(arr);
            }
        }

        System.out.println(list.toString());
    }

 

最新回复(0)
/jishuikM_2Bi1kgxVAq80D3tmxbZFSWgsgIz1OiZ6up7w_3D_3D4795071
8 简首页