【发布时间】:2017-08-10 19:19:13
【问题描述】:
我有一个 java 类,我在其中存储了一个枚举。(显示在这个问题的底部)在这个枚举中,我有一个名为 toCommaSeperatedString() 的方法,它返回一个逗号分隔的字符串枚举值。在阅读了此问题here 中有关性能的一些信息后,我正在使用 StringBuilder。
我将此枚举值转换为 commaSeperatedString 的方法是最有效的方法吗?如果是,那么在字符串的最后一个字符处删除多余逗号的最有效方法是什么?
例如,我的方法返回123, 456,,但我更喜欢123, 456。如果我想返回 PROPERTY1, PROPERTY2,我可以轻松使用 Apache Commons 库 StringUtils.join(),但是,当我遍历 String 数组时,我需要通过调用 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();
}
}
}
【问题讨论】:
-
您应该使用
.append(msgType.getValue()).append(", ")而不是.append(msgType.getValue() + ", "),但我认为这实际上是题外话,因为我同意您应该只使用一次String的答案,例如private static final字段。 -
@Radiodef 这不是我的代码,对于更长的故事,我无法添加字符串字段,但我同意如果我能够修改那部分静态字符串将是执行此操作的最简单方法的枚举。