我需要将字符串数组转换为字符串的Java代码。
当前回答
在Java 8中,我认为最简单的方法是:
String[] array = { "cat", "mouse" };
String delimiter = "";
String result = String.join(delimiter, array);
这样您就可以选择任意的分隔符。
其他回答
你可以这样做,给定一个基本类型的数组a:
StringBuffer result = new StringBuffer();
for (int i = 0; i < a.length; i++) {
result.append( a[i] );
//result.append( optional separator );
}
String mynewstring = result.toString();
我喜欢使用谷歌的番石榴Joiner,例如:
Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");
将产生与以下相同的String:
new String("Harry, Ron, Hermione");
ETA: Java 8现在也有类似的支持:
String.join(", ", "Harry", "Ron", "Hermione");
不能看到跳过空值的支持,但这很容易解决。
String[] strings = new String[25000];
for (int i = 0; i < 25000; i++) strings[i] = '1234567';
String result;
result = "";
for (String s : strings) result += s;
//linear +: 5s
result = "";
for (String s : strings) result = result.concat(s);
//linear .concat: 2.5s
result = String.join("", strings);
//Java 8 .join: 3ms
Public String join(String delimiter, String[] s)
{
int ls = s.length;
switch (ls)
{
case 0: return "";
case 1: return s[0];
case 2: return s[0].concat(delimiter).concat(s[1]);
default:
int l1 = ls / 2;
String[] s1 = Arrays.copyOfRange(s, 0, l1);
String[] s2 = Arrays.copyOfRange(s, l1, ls);
return join(delimiter, s1).concat(delimiter).concat(join(delimiter, s2));
}
}
result = join("", strings);
// Divide&Conquer join: 7ms
如果你没有选择,只能使用Java 6或7,那么你应该使用分治连接。
使用Apache Commons的StringUtils库的join方法。
String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");
String array[]={"one","two"};
String s="";
for(int i=0;i<array.length;i++)
{
s=s+array[i];
}
System.out.print(s);