Конвертировать Set <Enums>в Set <String> - PullRequest
1 голос
/ 24 января 2020

Мне нужно преобразовать множество перечислений во множество строк, как это возможно?

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.

Ответы [ 2 ]

6 голосов
/ 24 января 2020

Я бы транслировал набор перечислений, отображал их в строки и собирал их в набор:

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

РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос в комментарии, то же самое можно сделать с прямой версией l oop в Java версий до 8, хотя ИМХО это будет не так элегантно:

Set<String> setOfExamplesString = new HashSet<>()
for (Example e : setOfExample) {
    setOfExampleString.add(e.name());
}
0 голосов
/ 24 января 2020

Я не уверен, нужен ли вам позже набор Enum в вашей программе или нет. Но, если вообще целью является получить Set of String с использованием этих Enum, то я считаю, что добавление элемента в сам Set of String в первую очередь, вероятно, является лучшим вариантом.

мы будем просто используйте метод name в Enum, который дает нам представление 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);

}
}

Надеюсь, это поможет.

...