现有如下枚举,假设需要找出status=3的枚举项

public enum StatusEnum {
    DRAFT(1, "草稿"),
    CHECKING(2, "审核中"),
    REFUSE(3, "退回"),
    FINISH(4, "结束");

    private Integer status;
    private String remark;

    public Integer getStatus() {
        return status;
    }

    public String getRemark() {
        return remark;
    }

    StatusEnum(Integer status, String remark){
        this.status = status;
        this.remark = remark;
    }
}

使用Stream过滤,实现代码:

public static void main( String[] args )
{
    Optional<StatusEnum> optional = Arrays.stream(StatusEnum.values())
                .filter(p -> p.getStatus() == 3)
                .findFirst();
    if (optional.isPresent()){
        StatusEnum statusEnum = optional.get();
        System.out.println(String.format("status: %d,remark:%s", statusEnum.getStatus(), statusEnum.getRemark()));
    }
    else{
        System.out.println("找不到指定的枚举项");
    }
}

输出结果:
status: 3,remark:退回

posted on 2020-09-11 18:07  风停了,雨来了  阅读(7140)  评论(0编辑  收藏  举报