JDK8新特性-java.util.function-Predicate接口

上篇主要对Function函数进行了简单了解,本篇则主要了解Predicate。该函数的主要作用其实就是判定输入的对象是否否和某个条件,然后将其布尔值返回。
主要使用方法如下:

//唯一的抽象方法
boolean test(T t);
//且操作,既满足A也满足B条件
default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }
//取反操作 为true则返回false
 default Predicate<T> negate() {
        return (t) -> !test(t);
    }
//或操作,满足A条件或者满足B条件
 default Predicate<T> or(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) || other.test(t);
    }
//静态方法,判定是否相等
  static <T> Predicate<T> isEqual(Object targetRef) {
        return (null == targetRef)
                ? Objects::isNull
                : object -> targetRef.equals(object);
    }

除了test()抽象方法以及一个静态方法以外,其他的都是默认方法,可以存在多个默认方法以及静态方法。
实践操作如下:

  public static void main(String[] args) {
        Predicate<Integer> biggerThan6 = x -> x > 6;
        Predicate<Integer> lessThan3 = x -> x < 3;
        Predicate<Integer> lessThan9 = x -> x < 9;
        //76大为true,为false
        System.out.println("negate value=" + biggerThan6.negate().test(7));
        //76大为true
        System.out.println("test() value=" + biggerThan6.test(7));
        //86大且比9小
        System.out.println("and value=" + biggerThan6.and(lessThan9).test(8));
        //13小,满足一种条件
        System.out.println("or value=" + biggerThan6.or(lessThan3).test(1));
        //静态方法,判定是否相等
        System.out.println("isEqual false value=" + Predicate.isEqual("test").test("num"));
        System.out.println("isEqual true value=" + Predicate.isEqual("num").test("num"));
    }

返回值:

negate value=false
test() value=true
and value=true
or value=true
isEqual false value=false
isEqual true value=true

大多数标准的函数式接口都拥有用来生成或组合函数的非抽象方法。例如Predicate.isEqual(“test”)同”test”.equals一样(”test”位置的值不为null).
使用方式很简单,下篇则介绍剩余的几个常用函数式接口。

posted on 2018-01-03 20:00  huohuoL  阅读(213)  评论(0编辑  收藏  举报

导航