将set< enums>转换为set< string>

suzh9iv8  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(429)

我需要把枚举集转换成字符串集,怎么可能呢?

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 .

ecfsfe2w

ecfsfe2w1#

我将对枚举集进行流式处理,将它们Map到字符串,然后将它们收集到一个集合:

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());
}
a1o7rhls

a1o7rhls2#

我不知道你是否需要枚举集以后在你的程序或没有。但是,如果我们的目的是使用这些枚举获取字符串集,那么我认为首先将元素添加到字符串集本身可能是一个更好的选择。
我们将简单地在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);

}
}

希望这有帮助。

相关问题