Java StringJoiner
last modified May 31, 2025
This article explores StringJoiner in Java, a useful class for
efficiently constructing delimited strings.
StringJoiner helps format sequences of characters by inserting a delimiter between elements. Additionally, it allows customization with an optional prefix and suffix, making it ideal for structured text formatting.
One important detail about StringJoiner is that it only inserts the
delimiter between elements, but not at the end of the sequence. This means the
last element will not have an extra trailing delimiter, ensuring clean and
correct formatting without unnecessary characters.
Internally, StringJoiner is leveraged by the
String.join method, providing a simple and efficient way to
concatenate strings.
Using StringJoiner
The following example joins numbers with the StringJoiner class.
void main() {
var joined = new StringJoiner(",");
joined.add("1");
joined.add("2");
joined.add("3");
joined.add("4");
joined.add("5");
System.out.println(joined);
}
The example concatenates five numbers and prints the final string to the console.
var joined = new StringJoiner(",");
A new instance of the StringJoiner class is created. The comma
character is used as a delimiter.
joined.add("1");
joined.add("2");
joined.add("3");
joined.add("4");
joined.add("5");
Five values are added with the add method.
System.out.println(join);
The StringJoiner is converted to a string and printed to the
console.
$ java Main.java 1,2,3,4,5
The String.join method
In the second example, we join strings with the String.join
method.
void main() {
var joined = String.join("/", "2024", "7", "1");
System.out.println(joined);
}
The String.join method internally uses the StringJoiner.
var joined = String.join("/", "2024", "7", "1");
A date is concatenated with the String.join method.
$ java Main.java 2016/8/5
Joining list
The third example concatenates elements of a list.
void main() {
var words = List.of("Today", "is", "a", "beautiful", "day");
var joined = String.join(" ", words);
System.out.println(joined);
}
A list can be passed as an argument to the String.join method.
var joined = String.join(" ", words);
The elements of the list are joined with a single space character.
$ java Main.java Today is a beautiful day
Reading CSV file
The following example reads numbers from a CSV file and later joins them with a
StringJoiner.
13,24,35,16,50
This is the numbers.csv file.
void main() throws FileNotFoundException {
var fileName = "data.csv";
StringJoiner joined;
try (var scanner = new Scanner(new File(fileName))) {
scanner.useDelimiter(",");
joined = new StringJoiner("|");
while (scanner.hasNext()) {
joined.add(scanner.next());
}
}
System.out.println(joined);
}
The example reads CSV file, containing numbers, and joins them with a
StringJoiner using a different delimiter.
try (var scanner = new Scanner(new File(fileName))) {
scanner.useDelimiter(",");
The values are read with the Scanner class. The numbers are
separated by a comma character so we set the comma delimiter with the
useDelimiter method.
var joined = new StringJoiner("|");
A StringJoiner class is instantiated with a "|" delimiter.
while (scanner.hasNext()) {
join.add(scanner.next());
}
We retrieve the values with the scanner and concatenate them with the joiner.
Writing CSV file
The next example writes numbers to a CSV file.
void main() throws IOException {
var fileName = "data.csv";
var joined = new StringJoiner(",");
joined.add("21");
joined.add("43");
joined.add("54");
joined.add("76");
joined.add("98");
var newFile = new File(fileName);
boolean created = newFile.createNewFile();
if (created) {
try (var pw = new PrintWriter(newFile)) {
pw.write(joined.toString());
}
}
}
The example joins five numbers with a StringJoiner and writes the
concatendated string to a CSV file.
var joined = new StringJoiner(",");
joined.add("21");
joined.add("43");
joined.add("54");
joined.add("76");
joined.add("98");
Five numbers are concatenated with the StringJoiner. The numbers
are separated with a comma character.
var newFile = new File(fileName); boolean created = newFile.createNewFile();
A new file object is created in the current working directory.
if (created) {
try (var pw = new PrintWriter(newFile)) {
pw.write(joined.toString());
}
}
The joined values are written to the file.
The Collectors.joining method
Tthe Collectors.joining method returns a Collector
that concatenates the input elements, separated by the specified delimiter, in
encounter order.
void main() {
Stream<String> stream = Stream.of("Jan", "Peter", "Robert");
String names = stream.collect(Collectors.joining(" "));
System.out.println(names);
}
The example uses the stream API to concatenate three names.
$ java Main.java Jan Peter Robert
Source
Java StringJoiner - language reference
In this article we have covered StringJoiner and
Collectors.joining.
Author
List all Java tutorials.