Stream.allMatch()用于判断集合所有元素是否满足条件;需提供准确谓词、处理null及空集合,推荐抽取合格线为常量,并用Objects.nonNull或isQualified()增强健壮性与可读性。
在 Java 中,
是判断集合中**所有元素是否都满足指定条件**的简洁方式。要判断“所有员工绩效是否均已达到合格线”,关键在于:提供一个能准确表达“合格”逻辑的谓词(
),并确保数据源(如
)非空且字段可安全访问。
明确合格线与员工绩效字段
先定义好“合格线”的数值(例如 80 分),并确认
类中存在可读取的绩效字段(如
)。建议该方法返回
或
,避免空指针风险:
若绩效可能为
,需在谓词中显式判空,否则调用
会抛
合格线建议抽取为常量(如
),提升可维护性
基础用法:直接判断非空集合
假设
是
,且每个
的绩效值不为
:
该表达式返回
当且仅当列表中**每个员工**的分数 ≥ 80;若列表为空,
默认返回
(即“空集合视为全部满足条件”)——这点需根据业务判断是否合理。
立即学习
“
Java免费学习笔记(深入)
”;
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
增强健壮性:处理 null 和空集合
若绩效字段可能为
,或需对空集合返回
(即“无人考核=不通过”),可组合使用
和额外校验:
排除空列表场景
防止员工对象本身为
防止分数字段为
结合 Optional 与方法引用提升可读性
若
类提供了一个清晰的业务方法(如
),可直接复用:
此时
内部应已封装好判空与阈值比较逻辑,使流操作更语义化、更易测试。
Stream.allMatch()PredicateListEmployeegetPerformanceScore()intdoublenullallMatchNullPointerExceptionprivate static final int PASSING_SCORE = 80;employeesListEmployeenullboolean allPassed = employees.stream()
.allMatch(e -> e.getPerformanceScore() >= 80);trueallMatchtruenullfalseObjects.nonNullboolean allPassed = !employees.isEmpty() &&
employees.stream()
.allMatch(e -> Objects.nonNull(e) &&
Objects.nonNull(e.getPerformanceScore()) &&
e.getPerformanceScore() >= 80);!employees.isEmpty()Objects.nonNull(e)nullObjects.nonNull(e.getPerformanceScore())nullEmployeeisQualified()boolean allPassed = employees.stream()
.allMatch(Employee::isQualified);isQualified()