我得到了一组枚举。
EnumSet<States> statesSet = Enum.allOf(States.class);
与
Public enum States{
stateA
stateB
stateC
}
我有一个字符串数组,其中可能包含一个枚举值,例如。
String[] potentialStates = [xyz, stateA, abc];
现在我需要比较数组中的任何字符串是否与枚举值匹配
为了做到这一点,我创建了一个流
boolean isStateValid = Arrays.stream(potentailStates).anyMatch(statesSet::contains);
因为我在比较字符串和枚举,所以我知道没有匹配。但是我很难把字符串数组转换成枚举集。有没有简单的方法可以做到这一点?
3条答案
按热度按时间xytpbqjk1#
在枚举中,您可以创建一个方法来检查,例如:
然后你可以用途:
x6492ojm2#
在Stream.map您的情况下,可以使用www.example.com()将字符串流转换为枚举流:
返回一个流,该流由将给定函数应用于此流的元素的结果组成。
我想给
States
添加一个更自由的解析方法,如果字符串不能被解析,它会返回null
,而不是抛出异常来保持流管道的干净。一个可能的实现:溪流:
与实际问题无关,但根据java约定,enum名称应该是这样的-
STATE_A
,STATE_B
等。另外,枚举应该命名为
State
(单数),因为它的一个示例(STATE_A
)代表一个状态。ocebsuys3#
您可以直接将字符串转换为
ConvTypeEnum
枚举值,并将它们与try-catch
块结合使用。