java - 检查列表是否至少包含另一个 - 枚举

标签 java enums java-8

我有一个枚举:

public enum PermissionsEnum {
    ABC("Abc"),        
    XYZ("Xyz"),
    ....
}

然后我有一个枚举列表。我想检查我的列表是否至少有一个枚举。我目前通过迭代方法检查它。我也知道有一种方法可以使用 || 检查 list.contains(enum.ABC..) || list.contains(enum.XYZ)|| ...

有更好的方法吗?

This question展示了如果目标列表是一个字符串列表如何做到这一点,如果该列表是另一个枚举列表,我想获得匹配状态。

最佳答案

Collections.disjoint 如果两个指定的集合没有共同的元素,则返回 true。如果它返回 false,那么您的列表至少有一个枚举。

boolean contains = !Collections.disjoint(list, EnumSet.allOf(PermissionsEnum.class)));

Stream API 方法可以是:

EnumSet<PermissionsEnum> set = EnumSet.allOf(PermissionsEnum.class);
boolean contains = list.stream().anyMatch(set::contains);

(类似于迭代方法,但包含并行化)

关于java - 检查列表是否至少包含另一个 - 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49772441/

相关文章:

java - 使用 Hibernate 对多个属性进行动态查询

java - 使用 Hibernate 更新表中 'many' 项的计数

java - 在 Java 中将 protobuf 转换为 bigquery

java - 循环多个不同类型的列表并使用 java 8 lambda 表达式创建另一个列表

macos - 在 macOS 上打开终端时找不到任何与版本 "1.8.0_40"匹配的 JVM

java - 如何从泛型列表转换为 Java 8 中的对象列表?

Oracle sql Developer 中的 Java 字符串参数

enums - 模块中的枚举

c - typedef 枚举 : Different values for one member

java - 枚举、类、反射和泛型转换