2013-10-07 22 views
-1

这是一个简单的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; 
} 

是否有这样做的任何优雅的方式?

+1

http://stackoverflow.com/a/187720/961113 – Habib

+0

您可以使用第三方库,如Apache Commons,其中包含用于此类任务的实用工具方法。不过,我怀疑它有任何与您所写的代码不同的代码。如果你的列表有很多元素,也许你可以使用StringBuilder来提高性能。 – Mauren

回答

2

Apache Commons Lang

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

StringUtils在JDK中? –

+0

我的错误,我没有看到你的答案上面的公共链接:) –

5

如果你可以包括Guava(强烈推荐),那么解决办法是:

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

如果你不想使用外部库,你最好使用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(); 
} 
+1

通过get(i)'索引可以有非常糟糕的性能数字,例如在一个'LinkedList'上。 –

+0

@JoachimSauer是的,但我不想改变他的所有代码。 – Maroun

1
StringBuilder sb = new StringBuilder(); 
for(String str: a){ 
    sb.append(str).append('-'); 
} 
sb.deleteCharAt(sb.length() -1); 
相关问题