您的位置:首页 > 编程语言 > Java开发

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

2018-01-03 19:59 453 查看
上篇主要对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;
//7比6大为true,为false
System.out.println("negate value=" + biggerThan6.negate().test(7));
//7比6大为true
System.out.println("test() value=" + biggerThan6.test(7));
//8比6大且比9小
System.out.println("and value=" + biggerThan6.and(lessThan9).test(8));
//1比3小,满足一种条件
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).

使用方式很简单,下篇则介绍剩余的几个常用函数式接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: