use*_*985 3 java enums concatenation
有一个枚举值列表,我需要将它转换为由某个字符分隔的单个字符串。
enum Level {
LOW,
MEDIUM,
HIGH
}
Set<Level> levels = new HashSet<>(Arrays.asList(Level.LOW, Level.HIGH));
Run Code Online (Sandbox Code Playgroud)
预期结果:
String result = "LOW, HIGH"
Run Code Online (Sandbox Code Playgroud)
有String.join枚举吗?
这是一个可能的版本(Java 8+)
enum Levels {
LOW, MEDIUM, HIGH;
}
...
String s = EnumSet.allOf(Levels.class).stream().map(Enum::toString).collect(Collectors.joining(","));
// EnumSet.of(Levels.LOW, Levels.HIGH) if you want some specific enums
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
结果是:
LOW,MEDIUM,HIGH
Run Code Online (Sandbox Code Playgroud)
没有用于枚举的 Strings.join,但您可以将级别集映射到字符串中,然后连接它们,例如:
levels.stream().map(Enum::toString).collect(Collectors.joining(","))
Run Code Online (Sandbox Code Playgroud)
会产生(与你原来的设置)
jshell> enum Level {
...> LOW,
...> MEDIUM,
...> HIGH
...> }
| created enum Level
jshell> Set<Level> levels = new HashSet<>(Arrays.asList(Level.LOW, Level.HIGH));
levels ==> [LOW, HIGH]
jshell> levels.stream().map(Enum::toString).collect(Collectors.joining(","))
$3 ==> "LOW,HIGH"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2409 次 |
| 最近记录: |