温馨提示×

温馨提示×

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

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

如何创建Java Predicate断言

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

在 Java 中,Predicate 是 java.util.function 包下的一个函数式接口,常用于条件判断(断言)。它的定义是:

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}

下面从 基本用法 → 多种创建方式 → 组合使用 系统讲一下。


一、最基础的创建方式(Lambda)

import java.util.function.Predicate;

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

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

二、使用方法引用创建

1. 静态方法引用

Predicate<String> isEmpty = String::isEmpty;

2. 实例方法引用

String prefix = "abc";
Predicate<String> startsWith = prefix::startsWith;

三、使用匿名内部类(不推荐)

Predicate<Integer> isEven = new Predicate<Integer>() {
    @Override
    public boolean test(Integer i) {
        return i % 2 == 0;
    }
};

四、Predicate 的常见组合方法(非常实用)

1. and(与)

Predicate<Integer> positive = x -> x > 0;
Predicate<Integer> even = x -> x % 2 == 0;

Predicate<Integer> positiveAndEven = positive.and(even);

2. or(或)

Predicate<Integer> negativeOrZero = x -> x <= 0;
Predicate<Integer> isZero = x -> x == 0;

Predicate<Integer> result = negativeOrZero.or(isZero);

3. negate(非)

Predicate<Integer> isEven = x -> x % 2 == 0;
Predicate<Integer> isOdd = isEven.negate();

五、在集合中实际使用(最常用场景)

1. 过滤 List

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

Predicate<Integer> greaterThanThree = x -> x > 3;

list.stream()
    .filter(greaterThanThree)
    .forEach(System.out::println);

输出:

4
5
6

2. 移除元素(removeIf)

List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4));
list.removeIf(x -> x % 2 == 0);

六、多个条件组合示例

Predicate<String> notNull = s -> s != null;
Predicate<String> notEmpty = s -> !s.isEmpty();
Predicate<String> valid = notNull.and(notEmpty);

System.out.println(valid.test("hello")); // true
System.out.println(valid.test(""));      // false

七、自定义 Predicate 工具方法(进阶)

public static Predicate<Integer> inRange(int min, int max) {
    return x -> x >= min && x <= max;
}

Predicate<Integer> p = inRange(1, 10);

总结

✅ 创建 Predicate 的常用方式:

  • Lambda 表达式(最常用)
  • 方法引用
  • 匿名内部类(了解即可)

✅ 核心方法:

  • test(T t)
  • and / or / negate

如果你有具体业务场景(如校验参数、过滤数据、权限判断),我可以帮你写一个更贴合的示例。

向AI问一下细节

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

AI
助
手