我有一个java类,在其中存储一个枚举。(显示在这个问题的底部)在这个枚举中,我有一个名为toCommaSeperatedString()的方法,它返回一个逗号分隔的字符串枚举值。在阅读了这个问题 here 中的一些有关性能的信息后,我正在使用 StringBuilder 。
我将此枚举的值转换为逗号分隔字符串的方法是最有效的方法吗?如果是,那么删除字符串最后一个字符处的额外逗号的最有效方法是什么?
例如,我的方法返回 123, 456,
,但我更喜欢 123, 456
。如果我想返回 PROPERTY1, PROPERTY2
我可以轻松使用 Apache Commons 库 StringUtils.join(),但是,我需要通过调用 getValue
方法来降低一级我正在遍历字符串数组。
public class TypeEnum {
public enum validTypes {
PROPERTY1("123"),
PROPERTY2("456");
private String value;
validTypes(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static boolean contains(String type) {
for (validTypes msgType : validTypes.values()) {
if (msgType.value.equals(type)) {
return true;
}
}
return false;
}
public static String toCommaSeperatedString() {
StringBuilder commaSeperatedValidMsgTypes = new StringBuilder();
for(validTypes msgType : validTypes.values()) {
commaSeperatedValidMsgTypes.append(msgType.getValue() + ", ");
}
return commaSeperatedValidMsgTypes.toString();
}
}
}
最佳答案
我不会太担心效率。这样做很简单,而且速度会很快,只要你不以疯狂的方式做。如果这是您代码中最重要的性能瓶颈,我会感到惊讶。
我会这样做:
return Arrays.stream(TypeEnum.values())
.map(t -> t.value)
.collect(Collectors.joining(','));
如果需要的话可以缓存它;但这可能不会产生巨大的影响。
关于java - 将枚举值转换为逗号分隔字符串的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45621918/