首页 > 解决方案 > 使用 Java 8 Stream API 检查枚举列表

问题描述

这里是 Java 8。我有以下课程:

public enum Role {
  Admin,
  FunUser,
  SeriousUser,
  ...
  BasicUser;
}

@Getter
@Setter
public class User {
  private String login;
  private List<Role> roles;
  ...
}

我想使用 Stream API 编写一些代码来检查当前用户是“Admin”还是“SeriousUser”。

到目前为止,我最好的尝试仍然不是 Java 8ish:

if (user.getRoles().contains(Role.Admin) || user.getRoles().contains(Role.SeriousUser)) {
  ...
}

有没有办法通过 Java 8 Stream API 对几个“樱桃采摘”角色执行此枚举检查?

标签: javajava-8enumsjava-stream

解决方案


其他选项:

if(Stream.of(Role.Admin, Role.SeriousUser).anyMatch(user.getRoles()::contains)){
  ...
}

推荐阅读