在 Java 中,Predicate<T> 是 java.util.function 包下的一个函数式接口,常用于条件判断(断言),返回 boolean。
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
✅ 核心方法:test(T t)
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
}
}
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
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
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
negate() —— 取反Predicate<Integer> isEven = n -> n % 2 == 0;
Predicate<Integer> isOdd = isEven.negate();
System.out.println(isOdd.test(3)); // true
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 的条件判断器”
如果你愿意,我也可以给你:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。