You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8 Stream如何判断列表中所有枚举状态为FINISHED或PENDING?

枚举列表多状态全匹配实现

你可以通过在allMatch中指定允许的状态范围,实现判断列表内所有元素均为FINISHED或PENDING的需求,以下是几种实用写法:

写法一:Lambda直接判断

最直观的实现方式,在allMatch的Lambda表达式中直接枚举允许的状态:

if(states.stream().allMatch(status -> 
    status == SomeStatus.FINISHED || status == SomeStatus.PENDING
)) {
    // 执行自定义逻辑
}

写法二:利用集合contains方法

如果允许的状态数量较多,将其存入集合后用contains判断,代码更简洁易维护:

// 建议定义为常量,避免重复创建集合
Set<SomeStatus> ALLOWED_STATUSES = Set.of(SomeStatus.FINISHED, SomeStatus.PENDING);

if(states.stream().allMatch(ALLOWED_STATUSES::contains)) {
    // 执行自定义逻辑
}

写法三:枚举类封装判断方法

若该判断逻辑会多处使用,直接在枚举类中封装方法,代码复用性更高:

public enum SomeStatus {
    FINISHED, PENDING, EMPTY, STARTED;

    // 封装状态判断逻辑
    public boolean isFinishedOrPending() {
        return this == FINISHED || this == PENDING;
    }
}

调用时只需引用枚举方法:

if(states.stream().allMatch(SomeStatus::isFinishedOrPending)) {
    // 执行自定义逻辑
}

内容的提问来源于stack exchange,提问作者N.Rajal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:15:33