In this article, we will show you a few ways to print a Java Array.

1. JDK 1.5 Arrays.toString

We can use Arrays.toString to print a simple array and Arrays.deepToString for 2d or nested arrays.

PrintArray1.java

package com.favtuts.array;

import java.util.Arrays;

public class PrintArray {

    public static void main(String[] args) {
        printArrayWithJDK15ArraysToString();
    }

    static void printArrayWithJDK15ArraysToString() {

        // string array
        String[] strArray = new String[] { "Java", "Node", "Python", "Ruby" };
        System.out.println(Arrays.toString(strArray));
        // Output : [Java, Node, Python, Ruby]

        // int Array
        int[] intArray = { 1, 3, 5, 7, 9 };
        System.out.println(Arrays.toString(intArray));
        // Output : [1, 3, 5, 7, 9]

        // 2d array, need Arrays.deepToString
        String[][] strArrayDeep = new String[][] { { "favtuts1", "favtuts2" }, { "favtuts3", "favtuts4" } };
        System.out.println(Arrays.toString(strArrayDeep));
        // Output : [[Ljava.lang.String;@23fc625e, [Ljava.lang.String;@3f99bd52]

        System.out.println(Arrays.deepToString(strArrayDeep));
        // Output : [[favtuts1, favtuts2], [favtuts3, favtuts4]

        int[][] intArrayDeep = new int[][]{{1, 3, 5, 7, 9}, {2, 4, 6, 8, 10}};
        System.out.println(Arrays.toString(intArrayDeep));
        // Output : [[I@3a71f4dd, [I@7adf9f5f]

        System.out.println(Arrays.deepToString(intArrayDeep));
        // Output : [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
    }
}

Output

[Java, Node, Python, Ruby]
[1, 3, 5, 7, 9]
[[Ljava.lang.String;@d716361, [Ljava.lang.String;@6ff3c5b5]
[[favtuts1, favtuts2], [favtuts3, favtuts4]]
[[I@4b1210ee, [I@4d7e1886]
[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]

2. Java 8 Stream APIs

In Java 8, we can use Stream APIs to convert a simple array into a stream and print it out one by one; for 2d or nested array, we need to use flatMap.

PrintArray2.java

package com.favtuts.array;

import java.util.Arrays;

public class PrintArray {

    public static void main(String[] args) {
        printArrayWithJava8StreamAPI();
    }

    static void printArrayWithJava8StreamAPI() {

        // simple array
        String[] strArray = new String[]{"Java", "Node", "Python", "Ruby"};
        Arrays.stream(strArray).forEach(System.out::println);

        int[] intArray = {1, 3, 5, 7, 9};
        Arrays.stream(intArray).forEach(System.out::println);

        //2d array
        String[][] strArrayDeep = new String[][]{{"favtuts1", "favtuts2"}, {"favtuts3", "favtuts4"}};
        Arrays.stream(strArrayDeep).flatMap(Arrays::stream).forEach(System.out::println);

        int[][] intArrayDeep = new int[][]{{1, 3, 5, 7, 9}, {2, 4, 6, 8, 10}};
        Arrays.stream(intArrayDeep).flatMapToInt(Arrays::stream).forEach(System.out::println);

        // lambda
        // Arrays.stream(intArrayDeep).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);

    }
}

Output

Java
Node
Python
Ruby
1
3
5
7
9
favtuts1
favtuts2
favtuts3
favtuts4
1
3
5
7
9
2
4
6
8
10

3. Java 8 Stream APIs – Collectors.joining

The below example uses the Collectors.joining to join arrays into a string and print it out.

PrintArray3.java

package com.favtuts.array;

import java.util.Arrays;
import java.util.stream.Collectors;

public class PrintArray {

    public static void main(String[] args) {
        printArrayWithJava8CollectorsJoining();
    }

    static void printArrayWithJava8CollectorsJoining() {

        // simple array
        String[] strArray = new String[] { "Java", "Node", "Python", "Ruby" };
        String strArrayCollect = Arrays.stream(strArray).collect(Collectors.joining(", "));
        System.out.println(strArrayCollect);

        // alternative
        System.out.println(String.join(", ", strArray));

        int[] intArray = {1, 3, 5, 7, 9};
        String intArrayCollect = Arrays.stream(intArray)
                .mapToObj(Integer::toString)
                .collect(Collectors.joining(", "));
        System.out.println(intArrayCollect);

        //2d array
        String[][] strArrayDeep = new String[][]{{"favtuts1", "favtuts2"}, {"favtuts3", "favtuts4"}};
        String strArrayDeepCollect = Arrays.stream(strArrayDeep)
                .flatMap(Arrays::stream)
                .collect(Collectors.joining(", "));
        System.out.println(strArrayDeepCollect);

        int[][] intArrayDeep = new int[][]{{1, 3, 5, 7, 9}, {2, 4, 6, 8, 10}};
        String intArrayDeepCollect = Arrays.stream(intArrayDeep).flatMapToInt(Arrays::stream)
                .mapToObj(Integer::toString)
                .collect(Collectors.joining(", "));

        System.out.println(intArrayDeepCollect);
    }
}

Output

Java, Node, Python, Ruby
Java, Node, Python, Ruby
1, 3, 5, 7, 9
favtuts1, favtuts2, favtuts3, favtuts4
1, 3, 5, 7, 9, 2, 4, 6, 8, 10

4. Jackson APIs

We can use the Jackson API ObjectMapper to print anything.

pom.xml

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.0</version>
  </dependency>

PrintUtils.java

package com.favtuts.array;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class PrintUtils {
    
    private static final ObjectMapper om = new ObjectMapper();

    public static void print(Object object) {
        String result;
        try {
            result = om.writerWithDefaultPrettyPrinter().writeValueAsString(object);
            System.out.println(result);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

PrintArray4.java

package com.favtuts.array;

public class PrintArray {

    public static void main(String[] args) {
        printArrayWithJacksonAPIObjectMapper();
    }

    static void printArrayWithJacksonAPIObjectMapper() {

        // simple array
        String[] strArray = new String[]{"Java", "Node", "Python", "Ruby"};
        PrintUtils.print(strArray);

        int[] intArray = {1, 3, 5, 7, 9};
        PrintUtils.print(intArray);

        //2d array or nested array
        String[][] strArrayDeep = new String[][]{{"favtuts1", "favtuts2"}, {"favtuts3", "favtuts4"}};
        PrintUtils.print(strArrayDeep);

        int[][] intArrayDeep = new int[][]{{1, 3, 5, 7, 9}, {2, 4, 6, 8, 10}};
        PrintUtils.print(intArrayDeep);
    }

}

Output

[ "Java", "Node", "Python", "Ruby" ]
[ 1, 3, 5, 7, 9 ]
[ [ "favtuts1", "favtuts2" ], [ "favtuts3", "favtuts4" ] ]
[ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6, 8, 10 ] ]

5. References

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-basic/array

Leave a Reply

Your email address will not be published. Required fields are marked *