Introduction
In many programming tasks, you might find yourself needing to convert an array of strings into a single string where each element is separated by a specified delimiter. This process is essentially the opposite of splitting a string based on a separator. In this tutorial, we will explore various methods in Java for joining elements of an array or collection with a given separator.
Built-in Method Using String.join
Overview
Starting from Java 8, the String
class provides a convenient method named join
. This method simplifies the task by eliminating manual iteration and conditional checks. It efficiently joins elements from different data types, including arrays and collections.
Syntax
String joined = String.join(delimiter, elements);
- delimiter: The string that separates each element in the resulting string.
- elements: Can be varargs of
CharSequence
, an array, or any iterable collection like a list.
Examples
Using Varargs
You can directly pass individual strings to the join
method:
String joined1 = String.join(",", "a", "b", "c");
System.out.println(joined1); // Output: "a,b,c"
Using Arrays
Pass an array of strings as follows:
String[] array = {"a", "b", "c"};
String joined2 = String.join(",", array);
System.out.println(joined2); // Output: "a,b,c"
Using Collections
You can also join elements from collections such as lists:
List<String> list = Arrays.asList(array);
String joined3 = String.join(",", list);
System.out.println(joined3); // Output: "a,b,c"
Third-Party Libraries
Guava’s Joiner
Google’s Guava library offers a Joiner
class that provides additional flexibility. It allows skipping or replacing null elements and even supports joining maps.
Basic Usage
import com.google.common.base.Joiner;
String[] array = {"a", "b", "c"};
String joined = Joiner.on(",").join(array);
System.out.println(joined); // Output: "a,b,c"
Apache Commons Lang’s StringUtils.join
The Apache Commons Lang library also provides a straightforward method for joining strings.
Example
import org.apache.commons.lang3.StringUtils;
String[] s = {"a", "b", "c"};
String joined = StringUtils.join(s, ",");
System.out.println(joined); // Output: "a,b,c"
Custom Implementation Without External Libraries
If you prefer not to use external libraries, you can implement a custom join method using StringBuilder
for efficiency.
Example
public static String strJoin(String[] arr, String sep) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (i > 0) {
sb.append(sep);
}
sb.append(arr[i]);
}
return sb.toString();
}
// Usage
String[] exampleArray = {"a", "b", "c"};
String result = strJoin(exampleArray, ",");
System.out.println(result); // Output: "a,b,c"
This custom method efficiently builds the resulting string using StringBuilder
, which is more performant than concatenating strings directly in a loop.
Conclusion
Choosing the right method for joining array elements depends on your project’s needs and constraints. If you are working with Java 8 or later, the built-in String.join
method provides a clean and efficient solution. For additional flexibility, consider third-party libraries like Guava or Apache Commons Lang. Alternatively, implementing a custom solution allows full control over the process without external dependencies.