java - 将枚举值转换为逗号分隔字符串的最有效方法

标签 java string enums

我有一个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/

相关文章:

java - JavaFx 的 setOnAction 方法在幕后是如何工作的?

java - 当@JacksonXmlProperty.localName 匹配@JacksonXmlRootElement.localName 时无法反序列化展开的列表

python - 为什么 "in"适用于键而不适用于字符串?

java - 最终字段而不是枚举中的访问器

javascript - 继续 JavaScript "classes"- 枚举

java - 为什么我不能将枚举用于 switch-case 语句?

java - 更改 Accordion 图标和位置 JavaFX

java - Java Bean 的使用

javascript - 在 JavaScript 中比较字符串的最佳方法?

java - 在 Java 中尝试使用正则表达式提取 XMLNS