Java: Example - Array to String

Here is a simple, but slow, program to concatenate all of the strings in an array, each separated by a specifed string separater.

//-------------------------------------------------- arrayToString()
// Convert an array of strings to one string.
// Put the 'separator' string between each element.

public static String arrayToString(String[] a, String separator) {
    String result = "";
    if (a.length > 0) {
        result = a[0];    // start with the first element
        for (int i=1; i<a.length; i++) {
            result = result + separator + a[i];
        }
    }
    return result;
}

The problem with the above program is that a new String object is created each time thru the loop, and the old String object becomes eligible for garbage collection. This constant creation and abandoning objects is terribly inefficient. A more efficient way to do this is to use a StringBuffer or the equivalent Java 5 StringBuilder, which will grow as needed, but generally only has to expand a few times to do the job.

//-------------------------------------------------- arrayToString2()
// Convert an array of strings to one string.
// Put the 'separator' string between each element.

public static String arrayToString2(String[] a, String separator) {
    StringBuffer result = new StringBuffer();
    if (a.length > 0) {
        result.append(a[0]);
        for (int i=1; i<a.length; i++) {
            result.append(separator);
            result.append(a[i]);
        }
    }
    return result.toString();
}