predicate java_Java函数式编程之Predicate 过滤操作

本文介绍了Java 8中Predicate接口的使用,包括如何通过Lambda表达式构建Predicate对象进行集合过滤。文章展示了如何统计书名中特定字符串出现的次数、长度大于某个值的元素数量,并演示了使用removeIf方法删除集合中满足条件的元素。此外,还讨论了Predicate的组合方法,如and()、negate()和or()。
摘要由CSDN通过智能技术生成

使用Java8新增的Predicate操作集合

Java 8 中 Collection集合新增了一些需要Predicate参数的方法,这些方法可以对集合元素进行过滤。程序可使用Lambda表达式构建Predicate对象。

描述:

Predicate< T>接口接受一个T类型参数,返回一个boolean值。该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非):Predicate predicate = (s) -> s.length() > 0;

predicate.test("foo");              // true

predicate.negate().test("foo");     // false

Predicate nonNull = Objects::nonNull;

Predicate isNull = Objects::isNull;

Predicate isEmpty = String::isEmpty;

Predicate isNotEmpty = isEmpty.negate();

查看源码@FunctionalInterface

public interface Predicate {

boolean test(T t);

default Predicate and(Predicate super T> other) {

Objects.requireNonNull(other);

return (t) -> test(t) && other.test(t);

}

default Predicate negate() {

return (t) -> !test(t);

}

default Predicate or(Predicate super T> other) {

Objects.requireNonNull(other);

return (t) -> test(t) || other.test(t);

}

static  Predicate isEqual(Object targetRef) {

return (null == targetRef)

? Objects::isNull

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值