当前位置: java基础教程 > 13-函数式接口、lambda表达式 > 阅读正文

Predicate 函数式接口

2021.2.18.   508 次   1999字

此接口是一个测试型接口

1.导包
import java.util.function.Predicate;
2.方法

1.此接口包含一个抽象方法 boolean test(T t)

此接口也是一个泛型类,即 Predicate<T>,使用泛型传递一个数据类型

import java.util.function.Predicate;
public class Demo {
    /*
        定义一个方法
        参数传递一个String类型的字符串
        传递一个Predicate接口,泛型使用String
        使用Predicate中的方法test对字符串进行判断,并把判断的结果返回
     */
    public static boolean checkString(String s, Predicate<String> pre){
        return  pre.test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "abcdef";
        //调用checkString方法对字符串进行校验,参数传递字符串和Lambda表达式
        boolean b = checkString(s,str->str.length()>5);
        System.out.println(b);
    }
}

2.接口的默认方法 and

import java.util.function.Predicate;
public class Demo {
    /*
        定义一个方法,方法的参数,传递一个字符串
        传递两个Predicate接口
            一个用于判断字符串的长度是否大于5
            一个用于判断字符串中是否包含a
            两个条件必须同时满足
     */
    public static boolean checkString(String s, Predicate<String> pre1,Predicate<String> pre2){
        return pre1.and(pre2).test(s);//等价于return pre1.test(s) && pre2.test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "abcdef";
        //调用checkString方法,参数传递字符串和两个Lambda表达式, 判断字符串的长度是否大于5,判断字符串中是否包含a
        boolean b = checkString(s,(String str)->str.length()>5,(String str)->str.contains("a"));
        System.out.println(b);
    }
}

3.接口的默认方法 or

import java.util.function.Predicate;
public class Demo{
    /*
            定义一个方法,方法的参数,传递一个字符串
            传递两个Predicate接口
                一个用于判断字符串的长度是否大于5
                一个用于判断字符串中是否包含a
                满足一个条件即可
         */
    public static boolean checkString(String s, Predicate<String> pre1, Predicate<String> pre2){
        return  pre1.or(pre2).test(s);//等价于return pre1.test(s) || pre2.test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "bc";
        //调用checkString方法,参数传递字符串和两个Lambda表达式,判断字符串的长度是否大于5,判断字符串中是否包含a
        boolean b = checkString(s,(String str)->str.length()>5,(String str)->str.contains("a"));
        System.out.println(b);
    }
}

4.接口中的 negate (取反)

import java.util.function.Predicate;
public class Demo {
    /*
           定义一个方法,方法的参数,传递一个字符串
           使用Predicate接口判断字符串的长度是否大于5
    */
    public static boolean checkString(String s, Predicate<String> pre){
        //return !pre.test(s);
        return  pre.negate().test(s);//等效于return !pre.test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "abc";
        //调用checkString方法,参数传递字符串和Lambda表达式,判断字符串的长度是否大于5,并返回结果
        boolean b = checkString(s,(String str)->str.length()>5);
        System.out.println(b);
    }
}

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群