java.util包的predicate类作用

java.util.function 包中的 Predicate<T> 接口是 Java 8 引入的函数式接口之一,用于表示一个参数的谓词(布尔值函数)。Predicate 接口主要用于定义对某个类型 T 的对象进行条件测试的逻辑,并返回一个布尔值(true 或 false)。

Predicate 接口的主要用途包括:

  1. 条件过滤:在集合(如 ListSet)中过滤出满足特定条件的元素。
  2. 逻辑判断:在业务逻辑中用于判断某个对象是否满足某个条件。
  3. 组合条件:通过 Predicate 接口提供的默认方法(如 andornegate),可以将多个 Predicate 组合在一起,形成更复杂的条件判断。

Predicate 接口的主要方法包括:

  • boolean test(T t):用于测试指定的输入参数是否满足此谓词的条件。
  • default Predicate<T> and(Predicate<? super T> other):返回一个组合谓词,该谓词接受两个输入谓词作为参数,仅当两个谓词都为 true 时返回 true
  • default Predicate<T> or(Predicate<? super T> other):返回一个组合谓词,该谓词接受两个输入谓词作为参数,只要其中一个谓词为 true,就返回 true
  • default Predicate<T> negate():返回一个表示否定(逻辑非)的谓词。
  • static <T> Predicate<T> isEqual(Object targetRef):返回一个谓词,该谓词测试输入是否等于指定的目标引用。
  • static <T> Predicate<T> not(Predicate<? super T> target):返回一个表示目标谓词的逻辑否定的谓词。

 代码示例:

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class PredicateExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

        // 定义一个Predicate来检查字符串长度是否大于4
        Predicate<String> lengthPredicate = name -> name.length() > 4;

        // 使用Stream API进行过滤
        List<String> filteredNames = names.stream()
                .filter(lengthPredicate)
                .collect(Collectors.toList());

        System.out.println(filteredNames);  // 输出: [Alice, Charlie, David]

        // 使用组合条件
        Predicate<String> startsWithA = name -> name.startsWith("A");
        Predicate<String> combinedPredicate = startsWithA.and(lengthPredicate);

        List<String> combinedFilteredNames = names.stream()
                .filter(combinedPredicate)
                .collect(Collectors.toList());

        System.out.println(combinedFilteredNames);  // 输出: [Alice]
    }
}

运行结果:

[Alice, Charlie, David]
[Alice]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chen2017sheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值