Predicate<T>的方法

 先看这个接口的test方法是返回一个boolean型。and negate or方法最后都调用test方法。

@FunctionalInterface
public interface Predicate<T> {

     boolean test(T t);

    default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }

    default Predicate<T> negate() {
        return (t) -> !test(t);
    }

    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);
    }
}
  • boolean test(T t);

     //设置一个大于7的过滤条件
            Predicate<Integer> predicate = x -> x > 7;
            //输出 true
            System.out.println(predicate.test(10));

  • default Predicate<T> and(Predicate<? super T> other),可理解为 条件A && 条件B

    调用当前Predicate的test方法之后再去调用other的test方法,相当于进行两次判断

     //在上面大于7的条件下,添加是偶数的条件
            predicate = predicate.and(x -> x % 2 == 0);
            //输出 fasle
            System.out.println(predicate.test(6));
  • default Predicate<T> negate()

    对当前判断进行"!"操作,即取非操作,可理解为 ! 条件A

      Predicate<Integer> predicate = x -> x > 7;
      //输出 fasle  对predicate的条件取非
      System.out.println("ddddd:"+predicate.negate().test(10));

  • default Predicate<T> or(Predicate<? super T> other)

    对当前判断进行"||"操作,即取或操作,可以理解为 条件A ||条件B

            //设置一个大于7的过滤条件
            Predicate<Integer> predicate = x -> x > 7;
            Predicate<Integer> predicate2 = x -> x < 9;
    
            //输出 fasle  对predicate的条件取非
            System.out.println("对predicate的条件取非:"+predicate.negate().test(10));
            //输出 true  对predicate和predicate1的条件取或者
            System.out.println("对predicate和predicate1的条件取或 
            者:"+predicate.or(predicate2).test(10));

  • static <T> Predicate<T> isEqual(Object targetRef)

    对当前操作进行"="操作,即取等操作,可以理解为 A == B

     //输出 true  isEqual
            System.out.println("isEqual:"
                    +Predicate.isEqual(new User(21,"zhangsan")).test(new User(21,"zhangsan")));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值