Converting a List to String in Java

1. Introduction

In this quick article, we’ll have a look at how to convert a List of elements to a String. This might be useful in certain scenarios like printing the contents to the console in a human-readable form for inspection/debugging.

2. Standard toString() on a List

One of the simplest ways is to simply call the toString() method on the List:

@Test
public void whenListToString_thenPrintDefault() {
    List<Integer> intLIst = Arrays.asList(1, 2, 3);
 
    System.out.println(intLIst);
}

Output:

[1, 2, 3]

This technique internally utilizes the toString() method of the type of the elements within the List. In our case, we are using the Integer type which has a proper implementation of the toString() method.

If we are using our custom type, say, Person, then we need to make sure that the Person class overrides the toString() method and does not rely on the default implementation. If the toString() method is not properly implemented, you might get unexpected results:

[org.baeldung.java.lists.ListToSTring$Person@1edf1c96,
  org.baeldung.java.lists.ListToSTring$Person@368102c8,
  org.baeldung.java.lists.ListToSTring$Person@6996db8]

3. Custom Implementation Using Collectors

Often, we might need to display the output in a different format.

Compared to the previous example, let’s replace the comma (,) with a hyphen (-) and the square brackets ([, ]) with a set of curly braces ({, }):

@Test
public void whenCollectorsJoining_thenPrintCustom() {
    List<Integer> intList = Arrays.asList(1, 2, 3);
    String result = intList.stream()
      .map(n -> String.valueOf(n))
      .collect(Collectors.joining("-", "{", "}"));
 
    System.out.println(result);
}

Output:

{1-2-3}

The Collectors.joining() method requires a CharSequence, so we need to map the Integer to String. The same idea can be utilized in case of any other class even when we do not have the access to the code of that class.

4. Using an External Library

We’ll now see the usage of Apache Commons’ StringUtils class to achieve the similar results.

4.1. Maven Dependency

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>

The latest version of the dependency can be found here.

4.2. Implementation

The implementation is literally a single method call:

@Test
public void whenStringUtilsJoin_thenPrintCustom() {
    List<Integer> intList = Arrays.asList(1, 2, 3);
 
    System.out.println(StringUtils.join(intList, "|"));
}

Output:

1|2|3

Again, this implementation is internally dependent on the toString() implementation of the type we are considering.

5. Conclusion

In this article, we saw how easy it is to convert a List to a String using different techniques.

As always, the full source code for this article can be found over on GitHub.

Related posts:

Java Program to Find Nearest Neighbor for Static Data Set
Arrays.asList vs new ArrayList(Arrays.asList())
Converting Between a List and a Set in Java
Xây dựng ứng dụng Client-Server với Socket trong Java
Server-Sent Events in Spring
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Spring NoSuchBeanDefinitionException
Working With Maps Using Streams
Python String isprintable()
Java Program to Implement Pairing Heap
Fixing 401s with CORS Preflights and Spring Security
Java InputStream to String
Spring Data JPA Delete and Relationships
Creating a Custom Starter with Spring Boot
Spring Security Remember Me
Java Program to Implement Double Ended Queue
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Guide to CountDownLatch in Java
A Guide to Spring Cloud Netflix – Hystrix
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java Program to Implement Booth Algorithm
New Stream Collectors in Java 9
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Java Program to Implement Fenwick Tree
Java Program to Implement Uniform-Cost Search
Introduction to the Java NIO2 File API
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Registration – Activate a New Account by Email
Overview of Spring Boot Dev Tools
Spring WebClient and OAuth2 Support