我有一个类似这样的字符串枚举:
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并为它找到相应的枚举。
例如:列表包含字符串“一些值”和“一些第三个值”,然后我想使用JavaStream-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()));
但这不会编译,因为它不会返回任何内容。有什么想法吗?
建立从字符串到相应的< code>SomeEnum值的映射:
Map<String, SomeEnum> map =
Arrays.stream(SomeEnum.values()).collect(toMap(SomeEnum::toString, s -> s));
(这可以完成一次并存储)
那么你可以看看这个:
List<SomeEnum> enumList = someStringList.stream().map(map::get).collect(toList());
(您可能希望也可能不希望处理在映射中找不到字符串的情况:例如,您可以引发异常或删除此类元素)。
在你的某个世界中,
你可以建立一个地图
private static final Map<String, SomeEnum> stringToEnum = Arrays.stream(values())
.collect(Collectors.toMap(SomeEnum::toString, e -> e));
public static SomeEnum fromString(String name) {
return stringToEnum.get(name);
}
然后在客户端代码中使用它。这是它的样子。
List<SomeEnum> enumList = someStringList.stream()
.map(SomeEnum::fromString)
.collect(Collectors.toList());
问题内容: 这是我的问题-我正在寻找(如果存在的话)等效于的枚举。 这是我的代码问题的一个示例: 现在,我意识到,使用of 是最好的方法,但是我必须通过其他地方的开关/案例来运行我的枚举内容。因此,我的问题。 假设这样的事情不存在,我该怎么做呢? 问题答案: 应该这样做: 这样,您不必担心以后再添加其他枚举值,它们都已选中。 编辑: 如果枚举很大,则可以将值粘贴在HashSet中: 然后,您可以做
我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举: 现在我想要能够键入类似的内容:
我需要序列化/反序列化一个POJO包含一个特殊枚举(不是字符串的枚举)。我找到了很多字符串枚举的示例,但不是我的情况。 而不是: {“代码”:“20”,“消息”:“无效的URL参数值”,“说明”:“缺少应用程序标识符”} 编辑1 但我的结果是: 现在,我希望将改为
例如,我如何做类似的事情: 结果示例:
本文向大家介绍C#枚举到字符串并返回,包括了C#枚举到字符串并返回的使用技巧和注意事项,需要的朋友参考一下 示例
因此,进一步寻找,我发现这个人有一个解决方案:typescript中基于字符串的枚举的解决方案 这将允许像这样的东西工作: 唯一的回应基本上是说这样做是不安全的。(但我应该说,它确实起作用了--我可以键入eventtype.dot...Atom editor给了我5个大小写选项可供选择(保持代码中的内容一致),然后我可以使用它将字符串值吐出来,给我的用户一个很好的填充空间的体验,将来我可以更改枚举