java - 在 Set 集合中搜索

标签 java search collections set

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

角色.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;

角色名称.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;
        }

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

最佳答案

您可以使用流,例如:

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

关于java - 在 Set 集合中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664935/

相关文章:

java - 如何在 jpa 查询中使用自定义函数?

java - 为什么我在 Android Studio 3.0 中出现 'com.jakewharton:butterknife:7.0.1' 的问题?

java - 泛型和集合 - 类型未定义的方法

java - 根据可以为空的字段对对象列表进行排序

Delphi 中类 Java 的集合

javascript - jQuery 自动完成(devbridge)lookupFilter 搜索多个属性

python - 列表 2 中的哪些数字大于和小于列表 1 中的每个数字

search - 从源代码构建 ncurses 时如何为 terminfo 数据库设置自定义搜索路径

java - 如何在 Java 中根据 2 个对象属性对唯一列表进行排序

java - 如何对Arraylist的类别进行排序?