将"设置<Enums>"转换为"设置<String>"



我需要将枚举集转换为字符串集,这怎么可能?

public enum Example {
A,
B,
C
}
Set<Example> setOfExamples;
Set<String> setOfExamplesString;
setOfExamples.add(Example.A);
setOfExamples.add(Example.B);
setOfExamples.add(Example.A);
setOfExamples.add(Example.C);

现在我想保存(转换(setOfExamplessetOfExamplesString.

我会流式传输枚举集,将它们映射到字符串,然后将它们收集到一组:

Set<String> setOfExamplesString = 
setOfExamples.stream().map(Example::name).collect(Collectors.toSet());

编辑:
为了解决评论中的问题,同样的事情可以在 8 之前的 Java 版本中使用直接循环来完成,尽管恕我直言,它不会那么优雅:

Set<String> setOfExamplesString = new HashSet<>()
for (Example e : setOfExample) {
setOfExampleString.add(e.name());
}

我不确定你以后是否需要程序的枚举集。但是,如果目的是使用这些枚举获取字符串集,那么我相信首先将元素添加到字符串集本身可能是一个更好的选择。

我们将简单地在 Enum 上使用 name 方法,它为我们提供了字符串表示。代码片段将遵循

import java.util.HashSet;
import java.util.Set;
public class Test {
public enum Example {
A,
B,
C
}
public static void main(String[] args) {
Set<String> setOfExamplesString = new HashSet<>();
setOfExamplesString.add(Example.A.name());
setOfExamplesString.add(Example.B.name());
setOfExamplesString.add(Example.C.name());
System.out.println(setOfExamplesString);
}
}

希望这有帮助。

最新更新