java - 将枚举列表转换为具有匹配枚举值的逗号分隔字符串

标签 java java-8 enums

我有一个枚举值列表,如周一、周二、周三等,同样需要转换为逗号分隔的字符串。需要使用 Java 8 以有效的方式对其进行转换。 例如。

Arrays.stream(Days.values())
    .map(MON -> TimeRangeConstants.MON)
    .collect(Collectors.joining(","));
enum Days {
   MON, TUE, WED, THU, FRI, SAT, SUN;
}

main() {
   Days v1 = Days.MON;
   Days v2 = Days.WED;
   Days v3 = Days.FRI;
   List<Days> days = new ArrayList<>();
   days.add(v1);
   days.add(v2);
   days.add(v3);
    String str = convertToString(days);
}


convertToString(List<Days> list) {      
   // need to return String as "Monday, Wednesday, Friday" 
}

对于上面给出的示例,我需要输出为“星期一、星期三、星期五”

最佳答案

您必须将枚举编辑为:

enum Days {
    MON("Monday"), TUE("Tuesday"), WED("Wednesday")
    ;
    private String val;
    Days(String val) {
        this.val = val;
    }
    @Override
    public String toString() {
        return val;
    }
}

如果您有权访问较新的stream()方法,您可以执行以下操作:

final String s = String.join(",", list.stream().map(Object::toString).collect(Collectors.toList());
System.out.println("s = " + s);

关于java - 将枚举列表转换为具有匹配枚举值的逗号分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57362658/

相关文章:

java - Intellij IDEA 2017.1.1 - 如何显示多个控制台选项卡?

java - 在同一端口使用两个本地 ip

c# - 如果枚举用作方法参数,是否始终需要在 C# 中进行强制转换?

java - 返回类型的一致性

java - Java 编译器是否将 byte 和 Short 识别为文字?

java - Spring 在每个方法调用之前调用方法

java - java8流下载文件的有效方法

java - Java 8 的默认垃圾收集器

c++ - 从 .cpp 文件 (C++) 中的头文件读取枚举

c# - 从数据库中获取整数值并将其转换为 Enum