在 Java 中,Predicate 是 java.util.function 包下的一个函数式接口,常用于条件判断(断言)。它的定义是:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
下面从 基本用法 → 多种创建方式 → 组合使用 系统讲一下。
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
Predicate<String> isEmpty = String::isEmpty;
String prefix = "abc";
Predicate<String> startsWith = prefix::startsWith;
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean test(Integer i) {
return i % 2 == 0;
}
};
and(与)Predicate<Integer> positive = x -> x > 0;
Predicate<Integer> even = x -> x % 2 == 0;
Predicate<Integer> positiveAndEven = positive.and(even);
or(或)Predicate<Integer> negativeOrZero = x -> x <= 0;
Predicate<Integer> isZero = x -> x == 0;
Predicate<Integer> result = negativeOrZero.or(isZero);
negate(非)Predicate<Integer> isEven = x -> x % 2 == 0;
Predicate<Integer> isOdd = isEven.negate();
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
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
public static Predicate<Integer> inRange(int min, int max) {
return x -> x >= min && x <= max;
}
Predicate<Integer> p = inRange(1, 10);
✅ 创建 Predicate 的常用方式:
✅ 核心方法:
test(T t)and / or / negate如果你有具体业务场景(如校验参数、过滤数据、权限判断),我可以帮你写一个更贴合的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。