我需要将字符串数组转换为字符串的Java代码。


当前回答

使用Apache Commons的StringUtils库的join方法。

String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");

其他回答

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,那么你应该使用分治连接。

你需要从数组列表中生成字符串的代码,

Iterate through all elements in list and add it to your String result

你可以用两种方式:使用String作为结果或使用StringBuffer/StringBuilder。

例子:

String result = "";
for (String s : list) {
    result += s;
}

...但由于性能原因,这不是一个好的实践。更好的方法是使用StringBuffer(线程安全)或StringBuilder,它们更适合添加字符串

使用Apache commons StringUtils.join()。它接受一个数组作为参数(也有Iterable和Iterator参数的重载),并对每个元素(如果它不为null)调用toString()来获得每个元素的字符串表示形式。然后,每个元素的字符串表示形式被连接成一个字符串,如果指定了分隔符,则中间有分隔符:

String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);

生产:

a-b-1
public class ArrayToString
{   
    public static void main(String[] args)
    {
        String[] strArray = new String[]{"Java", "PHP", ".NET", "PERL", "C", "COBOL"};
        
        String newString = Arrays.toString(strArray);
        
        newString = newString.substring(1, newString.length()-1);

        System.out.println("New New String: " + newString);
    }
}

我喜欢使用谷歌的番石榴Joiner,例如:

Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");

将产生与以下相同的String:

new String("Harry, Ron, Hermione");

ETA: Java 8现在也有类似的支持:

String.join(", ", "Harry", "Ron", "Hermione");

不能看到跳过空值的支持,但这很容易解决。