gpt4 book ai didi

java - 检查列表是否至少包含一个枚举的最佳方法

转载 作者:行者123 更新时间:2023-12-02 22:48:35 24 4
gpt4 key购买 nike

我有一个枚举:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com