简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者
博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀
Android多媒体专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀
推荐1:车载系统实战课:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:HIDL与AIDL实战课:Android14 Binder之HIDL与AIDL通信实战课 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

🍉🍉🍉文章目录🍉🍉🍉
🌻1. 前言
本篇目的:Java进阶之函数式编程Predicate:用法实例
🌻2. Java进阶之Predicate介绍
-
基本概念
Predicate是Java 8核心函数式接口,表示接收参数T并返回boolean的断言函数,用于过滤、校验、条件判断等场景。 -
功能
提供test、and、or、negate、isEqual方法;可链式组合;支持泛型边界;配合Stream.filter、Optional.filter使用。 -
使用限制
不能抛出受检异常;链式组合注意短路逻辑;并行流需线程安全;避免副作用。 -
性能特性
Lambda内联执行;链式组合生成新Predicate实例;短路特性提前返回;比匿名类更轻量。 -
使用场景
集合过滤、参数校验、规则引擎、存在性判断、链式条件组合。
🌻3. 代码实例
🌻3.1 使用Predicate过滤集合
-
应用场景
筛选出偶数列表。 -
用法实例
import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; public class FilterPredicateDemo { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6); Predicate<Integer> isEven = n -> n % 2 == 0; List<Integer> evens = list.stream().filter(isEven).collect(Collectors.toList()); System.out.println(evens); } }输出[2, 4, 6]
🌻3.2 使用Predicate链式组合条件
-
应用场景
组合范围与非空校验。 -
用法实例
import java.util.function.Predicate; public class ChainPredicateDemo { public static void main(String[] args) { Predicate<Integer> inRange = n -> n >= 0 && n <= 100; Predicate<Integer> nonNull = n -> n != null; Predicate<Integer> valid = nonNull.and(inRange); System.out.println(valid.test(50)); // true System.out.println(valid.test(150)); // false } }输出true false
🌻3.3 使用Predicate并行过滤大集合
-
应用场景
并行流快速过滤合法邮箱。 -
用法实例
import java.util.*; import java.util.stream.*; public class ParallelPredicateDemo { public static void main(String[] args) { List<String> emails = Arrays.asList("a@b.com", "invalid", "c@d.com", null); Predicate<String> isEmail = s -> s != null && s.contains("@"); List<String> valid = emails.parallelStream() .filter(isEmail) .collect(Collectors.toList()); System.out.println(valid); } }输出[a@b.com, c@d.com]
🌻3.4 函数式编程Predicate总结
| 关键词 | 功能描述 | 典型应用 |
|---|---|---|
| Predicate | 断言接口 | 过滤条件 |
| and/or/negate | 链式组合 | 复杂条件 |
| parallelStream | 并行过滤 | 大集合过滤 |
4万+

被折叠的 条评论
为什么被折叠?



