我有一个枚举:
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/