使用Java 8将列表<String>转换为集合
是否有一个将字符串列表转换为枚举集的一行程序? 例如,拥有:
public enum MyVal {
ONE, TWO, THREE
}
及
List<String> myValues = Arrays.asList("ONE", "TWO", "TWO");
我想把myValues
转换成一个Set<MyVal>
包含与以下内容相同的项目:
EnumSet.of(MyVal.ONE, MyVal.TWO)
你可以在下面搜索框中键入要查询的问题!
是否有一个将字符串列表转换为枚举集的一行程序? 例如,拥有:
public enum MyVal {
ONE, TWO, THREE
}
及
List<String> myValues = Arrays.asList("ONE", "TWO", "TWO");
我想把myValues
转换成一个Set<MyVal>
包含与以下内容相同的项目:
EnumSet.of(MyVal.ONE, MyVal.TWO)
# 1 楼答案
是的,您可以为元素创建一个} 由^{} 初始化:
Stream<String>
,使用映射器MyVal::valueOf
将每个元素映射到相应的枚举值,并将其收集到一个新的EnumSet
,其中^{如果你只是想得到一个
Set
,而不是一个EnumSet
,你可以简单地使用内置的收集器Collectors.toSet()
# 2 楼答案
这里有一条两行线(但更短):
您可以创建一个包含所有可能值的
EnumSet
,并删除列表中不存在的值,而不是添加列表中存在的元素