java.util.function.Predicate是一个功能接口,可用作lambda表达式的赋值目标。 Predicate接口表示采用单个输入并返回布尔值的操作。

示例#1

以下示例显示如何使用lambda使用Predicate接口的test()方法。

文件:PredicateExample1.java -

package com.yiibai.tutorial.lambda;

import java.util.function.Predicate;

/**
 * @author yiibai
 */
public class PredicateExample1 {
    public static void main(String[] args) {

        //Predicate String 
        Predicate<String> predicateString = s -> {
            return s.equals("Hello");
        };

        System.out.println(predicateString.test("Hello"));
        System.out.println(predicateString.test("Hello World"));

        //Predicate integer
        Predicate<Integer> predicateInt = i -> {
            return i > 0;
        };

        System.out.println(predicateInt.test(5));
        System.out.println(predicateInt.test(-5));
    }
}

执行上面示例代码,得到以下结果:

true
false
true
false

示例#2

以下示例显示如何使用Predicate接口的默认方法(和,或者否定)。

文件:PredicateExample2.java -

package com.yiibai.tutorial.lambda;

import java.util.function.Predicate;

/**
 * @author yiibai
 */
public class PredicateExample2 {
    public static void main(String[] args) {
        Predicate<String> predicate=s->{
            return s.equals("Hello");
        };

        //AND logical operation  
        Predicate<String> predicateAnd=predicate.and(s->s.length()>4);
        System.out.println(predicateAnd.test("Hello"));

        //OR logical operation
        Predicate<String> predicateOr=predicate.or(s->s.length()==10);
        System.out.println(predicateOr.test("Hello"));

        //NEGATE logical operation
        Predicate<String> predicateNegate=predicate.negate();
        System.out.println(predicateNegate.test("Hello"));
    }
}

执行上面示例代码,得到以下结果:

true
true
false