还是比这更好的方式?
String concat(String[] strings) {
StringBuilder out = new StringBuilder();
for(String next: strings) {
out.append(next);
}
return out.toString();
}
不用担心,如果不是,我觉得应该有一个内置的?
答案 0 :(得分:6)
不,不在当前的Java库中。
在JDK7中,您应该能够编写String.join("", strings)
。结果发现,在posh 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);
}
(当然没有编译或测试过。)
答案 1 :(得分:5)
查看新的Google Guava libraries,一旦从1.0RC4传递到1.0,它将包含Google Collections。 Guava和Collections为您提供了相当多的力量和优雅,并已广泛用于Google生产代码。
Joiner类非常适合您的示例:
String[] strings = { "Stack", "Overflow", ".com" };
String site = Joiner.on("").join(strings);
Aleksander Stensby有一个很好的four part exploration番石榴/收藏品。
与Apache Collections一样,它不是JDK的一部分,尽管它在java.util.collection之上非常仔细地构建。
答案 2 :(得分:2)
org.apache.commons.lang.StringUtils.join
答案 3 :(得分:0)
关于Google Guava的第二个建议。
Google Collections上周发布,本周,Guava已经发布用于测试。 Google Collections的内容非常可靠,API也不会改变。我非常喜欢Google Collections而非apache one,特别是因为它完全通用。谷歌人还声称它的速度足以让他们在制作中使用,这相当令人印象深刻,但我无法亲自验证。