【发布时间】:2020-04-09 13:16:30
【问题描述】:
我有一个这样的字符串枚举:
public enum SomeEnum {
STRING1("some value"),
STRING2("some other value");
STRING3("some third value");
...more strings...
private String name;
SomeEnum(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
我有一个包含一些字符串的列表 someStringList。
我想遍历 someStringList 并为它找到相应的枚举。
例如:列表包含字符串“某个值”和“某个第三个值”,那么我想使用 Java Stream-API 向我返回一个包含 SomeEnum.STRING1 和 SomeEnum.STRING3 的列表
不知怎的,我无法让它工作。我试过这样的事情:
List<SomeEnum> enumList = Stream.of(someStringList).forEach( s -> Stream.of(SomeEnum.values()).filter(w -> w.toString().equalsIgnoreCase(s)).collect(Collectors.toList()));
但这不会编译,因为它不返回任何东西。有什么想法吗?
【问题讨论】:
-
这能回答你的问题吗? Finding enum value with Java 8 Stream API
-
很遗憾没有,因为在所有类似的问题中我发现它是一个字符串而不是字符串列表
-
在接受的答案中有
find方法后很容易适应。只需流式传输您的字符串列表和map,结果为find。 -
有一个
SomeEnum值流,通过检查someStringList是否包含被过滤的枚举值的name来过滤它,并将过滤后的枚举值收集到一个列表中
标签: java arraylist enums java-stream