作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个枚举:
public enum PermissionsEnum {
ABC("Abc"),
XYZ("Xyz"),
....
}
然后我有一个字符串列表。我想检查我的列表是否至少包含一个枚举。我目前通过迭代方法对其进行检查。我也知道有一种方法可以通过使用 ||
检查 list.contains(enum.ABC..) || 来做到这一点。列表.contains(enum.XYZ) || ...
。
有更好的方法吗?
最佳答案
一个List<String>
从不包含PermissionsEnum
值(value)。
条件list.contains(enum.ABC) || list.contains(enum.XYZ)
不会起作用。
相反,您可以映射 PermissionsEnum.values()
到 Stream<String>
并调用Stream#anyMatch
关于它:
boolean result = Arrays.stream(PermissionsEnum.values())
.map(PermissionsEnum::getValue)
.anyMatch(list::contains);
*我假设构造函数参数可以通过 getValue
访问方法。
如果列表很大(对其进行几次迭代可能会花费大量时间),我们可以稍微优化之前的代码片段并迭代列表一次:
Set<String> values = Arrays.stream(PermissionsEnum.values())
.map(PermissionsEnum::getValue)
.collect(Collectors.toSet());
boolean result = list.stream().anyMatch(values::contains);
关于java - 检查列表是否至少包含一个枚举的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49747276/
我是一名优秀的程序员,十分优秀!