2013-10-07 91 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); 
相關問題