温馨提示×

温馨提示×

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

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

java Predicate断言怎么用

发布时间:2026-10-09 09:06:05 来源:亿速云 阅读:87 作者:小樊 栏目:编程语言

在 Java 中,Predicate<T> 是 java.util.function 包下的一个函数式接口,常用于条件判断(断言),返回 boolean。


一、基本定义

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

✅ 核心方法:test(T t)


二、最基本用法(Lambda)

import java.util.function.Predicate;

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

        System.out.println(isEven.test(4)); // true
        System.out.println(isEven.test(3)); // false
    }
}

三、结合集合使用(最常用)

1️⃣ 过滤 List

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

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

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

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

filter() 的参数就是 Predicate


四、Predicate 的默认方法(重点)

1️⃣ and() —— 并且

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

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

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

2️⃣ 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
System.out.println(condition.test("XYZ"));   // true

3️⃣ negate() —— 取反

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

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

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

4️⃣ not()(Java 11+)

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

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

五、作为参数传递(解耦逻辑)

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

// 使用
List<String> list = Arrays.asList("apple", "banana", "cherry");
List<String> res = filter(list, s -> s.length() > 5);

六、常见使用场景

✅ 数据校验
✅ 集合过滤
✅ 规则引擎
✅ 流式处理(Stream)
✅ 权限判断


七、总结一句话

Predicate 就是“接收一个参数,返回 true / false 的条件判断器”

如果你愿意,我也可以给你:

  • Predicate vs Function 区别
  • 多个 Predicate 组合实战
  • Spring / Stream 中的真实案例
向AI问一下细节

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

AI
助
手