温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Predicate断言怎么使用

发布时间:2026-08-31 21:59:53 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

在 Java 中,Predicate(断言) 是 java.util.function 包下的一个函数式接口,常用于条件判断,典型场景是过滤(filter)。


一、Predicate 是什么

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}
  • 接收 一个参数 T
  • 返回 boolean
  • 常用于:集合过滤、条件判断、流式操作

二、最基础用法

1. 直接使用

Predicate<Integer> isPositive = x -> x > 0;

System.out.println(isPositive.test(5));   // true
System.out.println(isPositive.test(-3));  // false

三、结合 Stream 使用(最常见)

2. 过滤集合

List<Integer> list = List.of(1, 2, 3, 4, 5, 6);

List<Integer> result = list.stream()
        .filter(n -> n % 2 == 0)
        .toList();

System.out.println(result); // [2, 4, 6]

四、Predicate 的组合方法(重点)

3. and(并且)

Predicate<Integer> gt10 = x -> x > 10;
Predicate<Integer> lt20 = x -> x < 20;

Predicate<Integer> between = gt10.and(lt20);

System.out.println(between.test(15)); // true

4. or(或者)

Predicate<String> startA = s -> s.startsWith("A");
Predicate<String> endZ = s -> s.endsWith("Z");

Predicate<String> condition = startA.or(endZ);

System.out.println(condition.test("Apple")); // true

5. negate(取反)

Predicate<Integer> isEven = x -> x % 2 == 0;

Predicate<Integer> isOdd = isEven.negate();

System.out.println(isOdd.test(3)); // true

五、作为方法参数使用

6. 自定义过滤方法

public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
    List<T> result = new ArrayList<>();
    for (T t : list) {
        if (predicate.test(t)) {
            result.add(t);
        }
    }
    return result;
}

使用:

List<String> names = List.of("Tom", "Alice", "Bob");

List<String> result = filter(names, s -> s.length() > 3);

六、Predicate 常见使用场景

✅ 集合过滤
✅ 校验规则(如参数校验)
✅ 条件分支抽象
✅ 规则引擎
✅ Stream / Optional


七、和 if 的区别

// 传统写法
if (x > 0) { ... }

// Predicate 写法(更灵活、可复用)
Predicate<Integer> p = x -> x > 0;
if (p.test(x)) { ... }

如果你是想了解 Spring 中的断言(Assert) 或 JUnit 的断言,也可以告诉我,我可以分别讲。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手