$show=/label

Java - Joining Multiple Strings With a Delimiter

SHARE:

A quick guide how to join multiple strings with a given delimiter in java in different ways.

1. Overview

In this tutorial, We'll learn how to join the multiple strings with a delimiter in java programming.

Joining strings can be done in several ways with the given separator.

Before java 8, this is solved with the StringBuilder class. But, the same can be solved in 3 ways in java 8 or later.

Let us jump into the example programs on each solution.
Java - Joining Multiple Strings With a Delimiter



2. Java Joining Strings With Delimiter - StringBuilder


StringBuilder is a class that built on the Builder pattern and this is not synchronized.

By using this class, we run the for loop and add the each string and delimiter using append() method.

Look into the below example. Here we are using var-args concept.
package com.javaprogramto.programs.strings.joining;

public class JoiningStringDelimiterExample1 {

	public static void main(String[] args) {

		// input 1
		String output1 = joinStringsWithDelimiter("-", "hello", "world", "welcome", "to", "java", "programs");
		System.out.println("Ouptut 1 : " + output1);

		// input 1
		String output2 = joinStringsWithDelimiter("**", "this", "is", "second", "input");
		System.out.println("Ouptut 2 : " + output2);

	}

	/**
	 * Gets the joined string for the input strings with a given delimiter
	 * 
	 * @param delimiter
	 * @param strings
	 * @return
	 */
	private static String joinStringsWithDelimiter(String delimiter, String... strings) {

		StringBuilder stringBuilder = new StringBuilder();
		int index = 0;
		for (index = 0; index < strings.length - 1; index++) {

			stringBuilder.append(strings[index]).append(delimiter);
		}

		stringBuilder.append(strings[index]);

		return stringBuilder.toString();
	}

}

Output:
Ouptut 1 : hello-world-welcome-to-java-programs
Ouptut 2 : this**is**second**input

Any no of strings and any delimiter can be passed to this program. And also, StringBuffer can be used in-place of StringBuilder but StringBuffer is slow because of thread safe.

3. Java 8 Joining Strings With Delimiter - StringJoiner


One of the ways in java 8 is using StringJoiner class and this is a string utility class.

StringJoiner class can be used to construct the set of strings with the delimiter.

Look at the below example program.
package com.javaprogramto.programs.strings.joining;

import java.util.StringJoiner;

public class JoiningStringDelimiterExample2 {

	public static void main(String[] args) {

		// input 1
		String output1 = stringJoinerWithDelimiter("-", "hello", "world", "welcome", "to", "java", "programs");
		System.out.println("Ouptut 1 : " + output1);

		// input 1
		String output2 = stringJoinerWithDelimiter("**", "this", "is", "second", "input");
		System.out.println("Ouptut 2 : " + output2);

	}

	private static String stringJoinerWithDelimiter(String delimiter, String... strings) {

		StringJoiner stringJoinder = new StringJoiner(delimiter);
		for (String str : strings) {

			stringJoinder.add(str);
		}

		return stringJoinder.toString();
	}

}

This program produces the same output as above section example.

And alos this supports for adding the suffix and prefix. But these are optional functionality.
StringJoiner stringJoinder = new StringJoiner(delimiter, "!!", "!!");
Output:
Ouptut 1 : !!hello-world-welcome-to-java-programs!!
Ouptut 2 : !!this**is**second**input!!

4. Java 8 Joining Strings With Delimiter - String.join()


String class is added with join() method in java 8. This function reduces the lots of boiler plate coding in the applications now.

String.join() method takes the delimiter and a set of strings.

And alos optionally prefix and suffix also can be passed to join() method.
package com.javaprogramto.programs.strings.joining;

public class JoiningStringDelimiterExample3 {

	public static void main(String[] args) {

		// input 1
		String output1 = stringJoinWithDelimiter("-", "hello", "world", "welcome", "to", "java", "programs");
		System.out.println("Ouptut 1 : " + output1);

		// input 1
		String output2 = stringJoinWithDelimiter("**", "this", "is", "second", "input");
		System.out.println("Ouptut 2 : " + output2);

	}

	private static String stringJoinWithDelimiter(String delimiter, String... strings) {

		return String.join(delimiter, strings);
	}
}

This example also generates the same output.

5. Java 8 Joining Strings With Delimiter - Collectors.joining()


Java 8 stream api is added with very useful method Collectors.joining() method.

Collectors.joining() method should be passed to the collect() method. So that String can be retrieved from joining() output.

Look at the below sample code.
import java.util.Arrays;
import java.util.stream.Collectors;

public class JoiningStringDelimiterExample4 {

	public static void main(String[] args) {

		// input 1
		String output1 = stringCollectorsJoiningWithDelimiter("-", "hello", "world", "welcome", "to", "java",
				"programs");
		System.out.println("Ouptut 1 : " + output1);

		// input 1
		String output2 = stringCollectorsJoiningWithDelimiter("**", "this", "is", "second", "input");
		System.out.println("Ouptut 2 : " + output2);

	}

	private static String stringCollectorsJoiningWithDelimiter(String delimiter, String... strings) {

		String output = Arrays.stream(strings).collect(Collectors.joining(delimiter));

		return output;
	}
}

The generated output is same for this example also.

6. Java 8 Joining Strings With Delimiter - Third Party Libraries


Third party api's also provide the support for this functionality from apache commons lang StringUtils.join() and guava Joiner class.
import org.apache.commons.lang3.StringUtils;

public class JoiningStringDelimiterExample5 {

	public static void main(String[] args) {
	// same code as abvoe example
	}

	private static String stringCollectorsJoiningWithDelimiter(String delimiter, String... strings) {

		String output = StringUtils.join(strings, delimiter);

		return output;
	}
}


7. Conclusion


In this article, We've seen how many ways string joining is possible in older java, java 8 and third party apis.

But the String joining strictly discouraged using "+=" operator as below.
String out = "";

for (int i = 0; i < 100000; i++) {
	out += "new value";
}

Because, this code reconstructs many strings with "+=" operation which over kills the memory and prone to performance issues. Finally, this code execution will be much slower than StringBuilder.

COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java - Joining Multiple Strings With a Delimiter
Java - Joining Multiple Strings With a Delimiter
A quick guide how to join multiple strings with a given delimiter in java in different ways.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_S86BwytQucu1WJEr9nhF5QU1M77MsCg-kO5VwP8DB1f16QBm5Trk4VUvpfBIPfzGnQNJ5fqQXCQC_oqCG8neziJ55nh_8KXe29NTawaMf-ejtg5D8TQunDPgW6bcLxty_YSs2L9bPQ/w400-h288/Java+-+Joining+Multiple+Strings+With+a+Delimiter.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_S86BwytQucu1WJEr9nhF5QU1M77MsCg-kO5VwP8DB1f16QBm5Trk4VUvpfBIPfzGnQNJ5fqQXCQC_oqCG8neziJ55nh_8KXe29NTawaMf-ejtg5D8TQunDPgW6bcLxty_YSs2L9bPQ/s72-w400-c-h288/Java+-+Joining+Multiple+Strings+With+a+Delimiter.png
JavaProgramTo.com
https://www.javaprogramto.com/2021/11/%20java-join-multiple-strings-with-delimiter.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2021/11/%20java-join-multiple-strings-with-delimiter.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content