Print elements of a List separated by comma in Java
This post will discuss how to print elements of a List separated by a comma in Java.
1. Using StringJoiner class
Since Java 8, you can use the StringJoiner class to construct a sequence of elements separated by a delimiter and optionally starting with a prefix and ending with a suffix.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.Arrays; import java.util.List; import java.util.StringJoiner; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; StringJoiner joiner = new StringJoiner(delimiter); list.forEach(item -> joiner.add(item)); System.out.println(joiner.toString()); } } |
Output:
Java, C++, Ruby, JavaScript
For a List<Integer>, you can call Objects.toString() or String.valueOf() method before adding it to the StringBuilder instance.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.Arrays; import java.util.List; import java.util.StringJoiner; class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); String delimiter = ", "; StringJoiner joiner = new StringJoiner(delimiter); list.forEach(item -> joiner.add(String.valueOf(item))); System.out.println(joiner.toString()); } } |
Output:
1, 2, 3, 4, 5
Here’s another version that creates a string starting with the supplied prefix and ending with the supplied suffix.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Arrays; import java.util.List; import java.util.StringJoiner; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String prefix = "["; String suffix = "]"; StringJoiner joiner = new StringJoiner(delimiter, prefix, suffix); list.forEach(item -> joiner.add(item)); System.out.println(joiner.toString()); } } |
Output:
[Java, C++, Ruby, JavaScript]
2. Using Stream API
Another alternative in Java 8 and above is using the Collectors.joining() collector that concatenates the stream elements, separated by the specified delimiter.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String str = list.stream().map(Objects::toString) .collect(Collectors.joining(delimiter)); System.out.println(str); } } |
Output:
Java, C++, Ruby, JavaScript
The joining collector is overloaded to accept the prefix and suffix as well.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String prefix = "["; String suffix = "]"; String str = list.stream().map(Objects::toString) .collect(Collectors.joining(delimiter, prefix, suffix)); System.out.println(str); } } |
Output:
[Java, C++, Ruby, JavaScript]
3. Using String.join() method
If you have a List of strings, you directly call the String.join() method. It returns a new string composed of all elements of the specified iterable joined together with the specified delimiter. The method is also available since JDK 1.8.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String str = String.join(delimiter, list); System.out.println(str); } } |
Output:
Java, C++, Ruby, JavaScript
4. Using Guava
Similar to the String.join() method, Guava offers a Joiner class, to concatenate elements of a list using a provided delimiter.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import com.google.common.base.Joiner; import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String str = Joiner.on(delimiter).join(list); System.out.println(str); } } |
Output:
Java, C++, Ruby, JavaScript
All other solutions add null to the final sequence if any of the list elements is null. However, Guava’s join() method will throw NullPointerException if an individual element is null. The Joiner class provides flexibility to skip over the null elements using the skipNulls() method. Its usage is demonstrated below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import com.google.common.base.Joiner; import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", null, "Java"); String delimiter = ", "; String str = Joiner.on(delimiter).skipNulls().join(list); System.out.println(str); } } |
Output:
C, C++, Java
5. Using Apache Commons Lang
Apache Commons Lang library StringUtils class offers the join() method that joins elements of a list into a single string, separated by the supplied delimiter. Any null elements in the list are mapped to an empty string before joining.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import org.apache.commons.lang3.StringUtils; import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); String delimiter = ", "; String str = StringUtils.join(list, delimiter); System.out.println(str); } } |
Output:
Java, C++, Ruby, JavaScript
6. Using Custom Routine
If you don’t use Apache Commons or Guava third-party libraries in your project and on earlier versions of Java (Java 7 and earlier), you can implement your custom logic as shown below.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> list = Arrays.asList("Java", "C++", "Ruby", "JavaScript"); StringBuilder sb = new StringBuilder(); String delimiter = ""; for (String s : list) { sb.append(delimiter).append(s); delimiter = ", "; } System.out.println(sb.toString()); } } |
Output:
Java, C++, Ruby, JavaScript
That’s all about printing elements of a List separated by a comma in Java.
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)