![](/img/trans.png)
[英]Java convert Set<Set<String>> to List<List<String>>
[英]Convert a List<String> to a Set with 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)
是的,您可以创建元素的Stream<String>
,使用映射器MyVal::valueOf
将它们映射到相应的枚举值,并将其收集到由noneOf
初始化的toCollection
的新EnumSet
:
public static void main(String[] args) {
List<String> myValues = Arrays.asList("ONE", "TWO", "TWO");
EnumSet<MyVal> set =
myValues.stream()
.map(MyVal::valueOf)
.collect(Collectors.toCollection(() -> EnumSet.noneOf(MyVal.class)));
System.out.println(set); // prints "[ONE, TWO]"
}
如果您只是对Set
as result,而不是EnumSet
感兴趣,您可以简单地使用内置的收集器Collectors.toSet()
。
这是一个双线(但更短):
EnumSet<MyVal> myVals = EnumSet.allOf(MyVal.class);
myVals.removeIf(myVal -> !myValues.contains(myVal.name()));
您可以创建包含所有可能值的EnumSet
,而不是添加列表中不存在的元素,而不是添加列表中的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.