在Java 8引入的函数式编程特性中,Java谓词接口(Predicate)是一个非常实用且常用的函数式接口。无论你是刚接触Java的新手,还是希望深入理解Java函数式编程的开发者,掌握Predicate接口都能极大提升代码的简洁性和可读性。
Predicate 是 java.util.function 包中的一个函数式接口,它代表一个接受一个参数并返回布尔值(true 或 false)的函数。其核心方法是 test(T t)。
简单来说,Java Predicate接口用于“判断”某个条件是否成立。例如:判断一个数字是否为偶数、判断字符串是否为空等。
Predicate 接口的定义如下:
@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t);} 由于它是函数式接口,因此可以使用 Lambda 表达式或方法引用来创建实例。
下面是一个简单的例子:判断一个整数是否大于10。
import java.util.function.Predicate;public class PredicateExample { public static void main(String[] args) { // 使用Lambda表达式创建Predicate Predicate<Integer> isGreaterThan10 = x -> x > 10; System.out.println(isGreaterThan10.test(15)); // 输出: true System.out.println(isGreaterThan10.test(5)); // 输出: false }} Predicate 接口提供了几个默认方法,用于组合多个谓词:
and(Predicate<? super T> other):逻辑与or(Predicate<? super T> other):逻辑或negate():逻辑非例如,我们想筛选出年龄在18到60岁之间的人:
Predicate<Integer> isAdult = age -> age >= 18;Predicate<Integer> isSenior = age -> age <= 60;Predicate<Integer> isWorkingAge = isAdult.and(isSenior);System.out.println(isWorkingAge.test(25)); // trueSystem.out.println(isWorkingAge.test(17)); // falseSystem.out.println(isWorkingAge.test(65)); // false 结合 Stream API,Predicate 常用于过滤集合元素。这是Java Predicate示例中最常见的场景之一。
import java.util.*;import java.util.function.Predicate;public class FilterExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David"); // 筛选长度大于4的名字 Predicate<String> longName = name -> name.length() > 4; List<String> filteredNames = names.stream() .filter(longName) .toList(); System.out.println(filteredNames); // [Alice, Charlie] }} Java谓词接口(Predicate)是函数式编程的重要组成部分,它让条件判断更加灵活、可组合、可复用。通过 Lambda 表达式和 Stream API 的配合,你可以写出更简洁、更具表达力的代码。
无论你是学习Java函数式编程的新手,还是希望优化现有代码的老手,掌握 Predicate 接口都是一项必备技能。赶快动手试试这些Java Predicate示例吧!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126935.html