Java将字符串转换为枚举列表

ris*_*p89 5 java string enums

我有一个字符串如下:

"[Monday, Tuesday]"
Run Code Online (Sandbox Code Playgroud)

我想将此字符串转换为"Day"类型的枚举列表.我的"日"枚举如下:

public enum Day {
    Monday,Tuesday;
}
Run Code Online (Sandbox Code Playgroud)

我通过在"Day"的List上调用toString()来获取我的输入字符串.如下:

List<Day> days = new ArrayList<Day>();
days.add(Day.Monday);
days.add(Day.Tuesday);

String input = days.toString();
Run Code Online (Sandbox Code Playgroud)

我知道我可以用逗号和括号解析输入字符串.但是,有没有有效的方法来做到这一点?

重复一遍,我想将字符串转换为枚举列表.

**编辑**

问题不仅仅是将String转换为枚举,反之亦然.它涉及列表和字符串解析.

Lui*_*oza 11

如果您使用Java 8:

//assume your Day enum has more values
String string = "[Monday, Wednesday, Tuesday, Friday, Thursday]";
String stringWithNoBrackets = string.substring(1, string.length() - 1);
List<Days> days = Arrays.asList(stringWithNoBrackets.split(",\\s+"))
        .stream()
        .map(Days::valueOf)
        .collect(Collectors.toList());
System.out.println(days);
Run Code Online (Sandbox Code Playgroud)

此外,我们不需要使用更少的代码将数组转换为列表:

List<Days> days2 = Arrays.stream(stringWithNoBrackets.split(",\\s+"))
    .map(Days::valueOf)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)