Проверка списка перечислений с Java 8 Stream API - PullRequest
3 голосов
/ 11 февраля 2020

Java 8 здесь. У меня есть следующие классы:

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

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

Я хотел бы написать некоторый код, используя Stream API, который проверяет, является ли текущий пользователь «Администратором» или «SeriousUser».

Моя лучшая попытка на данный момент, которая работает, все еще не Java 8i sh:

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

Есть ли способ выполнить эту проверку перечисления для нескольких "выбранных вишней" ролей через * 1013? * 8 Stream API?

Ответы [ 2 ]

5 голосов
/ 11 февраля 2020

Другой вариант:

if(Stream.of(Role.Admin, Role.SeriousUser).anyMatch(user.getRoles()::contains)){
  ...
}
1 голос
/ 11 февраля 2020

Вы можете сделать так:

if( user.getRoles().stream()
         .anyMatch(role -> role.equals(Role.Admin) || role.equals(Role.SeriousUser))){
   ...
}
...