JAVA: преобразование набора перечисления в строку, разделенную списком и кавычками - PullRequest
0 голосов
/ 27 марта 2020

Здравствуйте. У меня в настоящее время есть набор перечислений, и я хотел бы преобразовать этот набор перечислений в строку. 1009 *'THREAT','TARGET'

Каков наилучший способ сделать это? Я не слишком знаком с потоками, но я считаю, что правильное мышление - это что-то вроде

mySet.stream().map(Enum::toString).collect(Collectors.joining(","))

Однако это только дает мне 'THREAT,ALERT'

Возможно, есть способ использовать Strings.join?

Ответы [ 3 ]

1 голос
/ 27 марта 2020

Да, вы можете использовать String.join() для этого. Например:

Set<AlertSide> mySet = EnumSet.of(AlertSide.THREAT, AlertSide.TARGET);
String result = String.join(",", mySet.stream()
  .map(it -> "'" + it + "'")
  .collect(Collectors.toList()));

Или ... вы также можете использовать Collectors.joining (), например:

String result = mySet.stream()
  .map(it -> "'" + it + "'")
  .collect(Collectors.joining(","));

result -> 'THREAT','TARGET'

1 голос
/ 27 марта 2020

Вы можете сделать это с joining(CharSequence delimiter,CharSequence prefix,CharSequence suffix)

String result = mySet.stream()
            .map(AlertSide::name)
            .collect(Collectors.joining("','", "'", "'"));
1 голос
/ 27 марта 2020

Во-первых, если у вас есть Set из перечислений, вы должны использовать EnumSet (доступно с Java 5) :

Set<AlertSide> mySet = EnumSet.of(AlertSide.THREAT, AlertSide.TARGET);

Если вам нужна строка с содержимым 'THREAT','TARGET', то вам нужно самостоятельно добавить одинарные кавычки:

mySet.stream().map(e -> "'" + e + "'").collect(Collectors.joining(","))

Результат

'THREAT','TARGET'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...