Predicate.test()

Predicate.test() 是 Java 中 java.util.function.Predicate 接口的一个方法。Predicate 是一个函数式接口,通常用于表示一个布尔值函数(即返回 truefalse 的函数)。test() 方法是该接口的核心方法,用于对给定的输入进行条件判断。


方法签名

boolean test(T t);
  • 参数

    • t:需要测试的对象,类型为泛型 T
  • 返回值

    • 返回一个布尔值 (truefalse),表示输入对象是否满足 Predicate 定义的条件。

使用场景

Predicatetest() 方法通常用于过滤、条件判断等场景,尤其是在集合操作中结合流(Stream API)使用。


示例代码

1. 基本用法

import java.util.function.Predicate;

public class PredicateTestExample {
    public static void main(String[] args) {
        // 定义一个 Predicate,判断字符串是否为空
        Predicate<String> isNotEmpty = str -> str != null && !str.isEmpty();

        // 测试字符串
        System.out.println(isNotEmpty.test("Hello")); // 输出: true
        System.out.println(isNotEmpty.test(""));      // 输出: false
        System.out.println(isNotEmpty.test(null));    // 输出: false
    }
}

2. 结合 Stream API 使用

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

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

        // 定义一个 Predicate,判断字符串是否非空且非 null
        Predicate<String> isValidName = name -> name != null && !name.isEmpty();

        // 使用 Stream API 过滤无效的名字
        List<String> validNames = names.stream()
                                       .filter(isValidName)
                                       .collect(Collectors.toList());

        System.out.println(validNames); // 输出: [Alice, Bob, Charlie]
    }
}

3. 组合多个 Predicate

Predicate 提供了 and()or()negate() 方法,可以组合多个条件。

import java.util.function.Predicate;

public class PredicateCombinationExample {
    public static void main(String[] args) {
        Predicate<Integer> isEven = num -> num % 2 == 0;
        Predicate<Integer> isPositive = num -> num > 0;

        // 组合条件:数字既是偶数又是正数
        Predicate<Integer> isEvenAndPositive = isEven.and(isPositive);

        System.out.println(isEvenAndPositive.test(4));  // 输出: true
        System.out.println(isEvenAndPositive.test(-2)); // 输出: false
        System.out.println(isEvenAndPositive.test(3));   // 输出: false
    }
}

总结

  • Predicate.test() 是一个非常有用的工具方法,适用于各种条件判断场景。
  • 它常与 Java 8 引入的 Stream API 配合使用,能够简化代码逻辑并提高可读性。
  • 通过 and()or()negate() 方法,可以灵活地组合复杂的条件逻辑。

如果需要进一步了解或有其他相关问题,请随时告诉我!

posted @ 2025-04-14 09:12  chuangzhou  阅读(79)  评论(0)    收藏  举报