在集合中搜索

时间:2018-10-05 11:44:57

标签: java search collections set

我有一个Role对象,其中有一组Rolenames,我想检查用户是否具有特定角色。告诉我如何最好地做到美观而简洁。

Role.java

@Table(name = "roles")
public class Role {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(EnumType.STRING)
    @NaturalId
    @Column(length = 60)
    private RoleName name;

RoleName.java:

public enum RoleName {
    ROLE_ADMIN,
    ROLE_MANAGER,
    ROLE_CLIENT,
    ROLE_USER,
}

现在我的搜索如下:

boolean isFind = false;
        for (Role role : user.getRoles()) {
            isFind = role.getName().equals(RoleName.ROLE_CLIENT);
            if (isFind) break;
        }

但是我不太喜欢这种方式。你能建议一个更好的选择吗?

1 个答案:

答案 0 :(得分:2)

您可以使用以下流:

boolean isFind = 
    user.getRoles()
        .stream()
        .map(Role::getName)
        .anyMatch(n -> n == RoleName.ROLE_CLIENT);