【问题标题】:Adding delimiter has any elegant way? [duplicate]添加分隔符有什么优雅的方法吗? [复制]
【发布时间】:2013-10-14 05:12:19
【问题描述】:

这是一个简单的 java 编码问题。 我有一个String 列表 [说"hello" "how" "are" "you?"]。我需要在列表的每个元素之间插入一个分隔符 [-],以便我的输出是 hello-how-are-you?

一种简单的方法如下:

private static String addDelim(List<String> a)
{
    String s = "";
    for(int i=0; i<a.size(); i++)
    {
        if(i != 0) // don't add if first element
        {
            s += "-";
        }

        s += a.get(i);
    }
    return s;
}

有什么优雅的方法吗?

【问题讨论】:

  • 您可以使用第三方库,例如 Apache Commons,其中包含此类任务的实用方法。但是,我怀疑它的代码与您编写的代码不同。如果您的列表有很多元素,也许您可​​以使用StringBuilder 来提高性能。

标签: java


【解决方案1】:

如果您可以包含Guava(强烈推荐),那么解决方案是:

 return Joiner.on("-").join(s);

【讨论】:

    【解决方案2】:

    来自Apache Commons Lang

    String out = StringUtils.join(yourList, '-');
    

    【讨论】:

    • StringUtils 在 JDK 中吗?
    • 我的错,我没有看到你的答案上方的公共链接:)
    【解决方案3】:

    如果不想使用外部库,最好使用StringBuilder

    private static String addDelim(List<String> a) {
        StringBuilder sb = new StringBuilder();
        for(int i=0; i < a.size(); i++) {
            if(i != 0) 
                sb.append("-");
            sb.append(a.get(i));
        }
        return sb.toString();
    }
    

    【讨论】:

    • 通过get(i) 进行索引可能会产生非常糟糕的性能数据,例如在LinkedList 上。
    • @JoachimSauer 是的,但我不想更改他的所有代码。
    【解决方案4】:
    StringBuilder sb = new StringBuilder();
    for(String str: a){
        sb.append(str).append('-');
    }
    sb.deleteCharAt(sb.length() -1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2015-07-08
      • 1970-01-01
      • 2021-06-27
      • 2017-01-22
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多