温馨提示×

温馨提示×

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

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

Java Predicate断言是什么

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

在 Java 中,Predicate(断言) 是 Java 8 引入的一个函数式接口,位于 java.util.function 包中,常用于条件判断。


一、Predicate 是什么

Predicate<T> 是一个接收一种类型参数、返回 boolean 结果的接口,用来表示一个“条件”或“断言”。

核心方法

boolean test(T t);

二、基本使用示例

1️⃣ 定义一个 Predicate

import java.util.function.Predicate;

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

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

三、常用默认方法(组合条件)

Predicate 提供了多个用于逻辑运算的方法:

1️⃣ 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

2️⃣ or(或)

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

Predicate<Integer> cond = isEven.or(isNegative);

3️⃣ negate(非)

Predicate<Integer> isZero = x -> x == 0;
Predicate<Integer> isNotZero = isZero.negate();

四、在集合中的典型应用(Stream / filter)

Predicate 最常见的使用场景是 集合过滤。

import java.util.*;
import java.util.stream.*;

List<String> list = Arrays.asList("Java", "Python", "C++", "Go");

List<String> result = list.stream()
    .filter(s -> s.startsWith("J"))
    .collect(Collectors.toList());

System.out.println(result); // [Java]

等价写法(使用 Predicate):

Predicate<String> startsWithJ = s -> s.startsWith("J");
list.stream().filter(startsWithJ);

五、作为方法参数使用

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

// 调用
filter(numbers, x -> x % 2 == 0);

六、总结

✅ Predicate 的本质

一个“输入 T,返回 boolean”的条件判断函数

✅ 适用场景

  • 条件过滤(Stream / filter)
  • 方法参数传递逻辑
  • 逻辑组合(and / or / negate)

如果你愿意,我也可以对比 Predicate 和 Function、Consumer 的区别,或者结合真实业务场景给你示例。

向AI问一下细节

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

AI
助
手