【问题标题】:Convert Set<Enums> to Set<String>将 Set<Enums> 转换为 Set<String>
【发布时间】:2020-01-24 16:02:36
【问题描述】:

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

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);

现在我想将setOfExamples 保存(转换)为setOfExamplesString

【问题讨论】:

  • 您对setOfExamplesString 的期望是什么?到目前为止,您尝试过什么?
  • 顺便说一句,将Example.A 添加到集合中两次是没有意义的。是一套。它不关心重复。

标签: java string enums set


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,但这不是一个通用的解决方案。我需要它在 Java 7 中工作。
【解决方案2】:

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

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

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);

}
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2021-04-26
    • 2011-08-24
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多