2009-11-27 20 views

回答

6

不,不在當前Java庫中。

在JDK7中,您應該可以編寫String.join("", strings)。發現在for循環中需要索引的「85%」是做一個字符串連接(無論如何你都可以這樣做)。

我想,如果你想成爲超級高效的,你可以把它寫成類似:

public static String concat(String... strs) { 
    int size = 0; 
    for (String str : strs) { 
     size += str.length; 
    } 

    final char[] cs = new char[size]; 
    int off = 0; 
    try { 
     for (String str : strs) { 
      int len = str.length(); 
      str.getChars(0, len, cs, off); 
      off += len; 
     } 
    } catch (ArrayIndexOutOfBoundsException exc) { 
     throw new ConcurrentModificationException(exc); 
    } 
    if (off != cs.length) { 
     throw new ConcurrentModificationException(); 
    } 
    return new String(cs); 
} 

(沒有編譯或測試,當然)。

+0

在一年中,大聲笑:) – 2009-11-27 23:21:26

+0

IIRC,最後一個里程碑現在是在九月(2010年)。 – 2009-11-27 23:21:35

+0

目前的M5里程碑似乎也完全可用。 – skaffman 2009-11-27 23:30:51

2
org.apache.commons.lang.StringUtils.join 
+2

OP特別要求「內置功能」[原文如此] – Tim 2009-11-27 23:24:12

+2

@Tim Apache commons實際上是內置的。 – 2009-11-27 23:27:13

+0

他說應該有一個,他是對的....但是沒有,而且Apache Commons是我們所擁有的最好的 – skaffman 2009-11-27 23:30:02

5

看看新Google Guava libraries ,一旦它從1.0RC4通過到1.0,它將合併Google Collections。番石榴和收藏品爲您提供了相當多的力量和優雅,並已廣泛用於Google生產代碼。

Joiner類適合您的完美例子:

String[] strings = { "Stack", "Overflow", ".com" }; 
String site = Joiner.on("").join(strings); 

克瓦希Stensby具有番石榴/收藏的一個很好的four part exploration

與Apache Collections類似,它不是JDK的一部分,儘管它在java.util.collection上非常小心地構建。

+0

小修正:Joiner.on(「」)。join(字符串)。 – 2009-11-29 09:47:03

+0

謝謝凱文,修好了! (*感謝收藏集,我剛開始仔細觀察它們,迫不及待地使用它們!) – 2009-11-29 14:33:53

0

第二個建議看看谷歌番石榴。

Google Collections上週發佈,本週Guava已發佈進行測試。 Google Collections的內容很紮實,API不會改變。我非常喜歡Google Collections,因爲它完全通用。谷歌的人也聲稱,它的速度足以讓他們用於製作,這是相當令人印象深刻的,但我無法親自驗證。

相關問題