Main Tutorials

How to print an Array in Java

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

Table of contents.

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.mkyong;

import java.util.Arrays;

public class PrintArray1 {

    public static void main(String[] args) {

        // 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[][]{{"mkyong1", "mkyong2"}, {"mkyong3", "mkyong4"}};
        System.out.println(Arrays.toString(strArrayDeep));
        // Output : [[Ljava.lang.String;@23fc625e, [Ljava.lang.String;@3f99bd52]

        System.out.println(Arrays.deepToString(strArrayDeep));
        // Output : [[mkyong1, mkyong2], [mkyong3, mkyong4]

        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

Terminal

[Java, Node, Python, Ruby]
[1, 3, 5, 7, 9]
[[Ljava.lang.String;@41629346, [Ljava.lang.String;@404b9385]
[[mkyong1, mkyong2], [mkyong3, mkyong4]]
[[I@682a0b20, [I@3d075dc0]
[[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.mkyong;

import java.util.Arrays;

public class PrintArray2 {

    public static void main(String[] args) {

        // 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[][]{{"mkyong1", "mkyong2"}, {"mkyong3", "mkyong4"}};
        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

Terminal

Java
Node
Python
Ruby
1
3
5
7
9
mkyong1
mkyong2
mkyong3
mkyong4
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.mkyong;

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

public class PrintArray3 {

  public static void main(String[] args) {

      // 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[][]{{"mkyong1", "mkyong2"}, {"mkyong3", "mkyong4"}};
      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

Terminal

Java, Node, Python, Ruby
Java, Node, Python, Ruby
1, 3, 5, 7, 9
mkyong1, mkyong2, mkyong3, mkyong4
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.mkyong;

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.mkyong;

public class PrintArray4 {

    public static void main(String[] args) {

        // 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[][]{{"mkyong1", "mkyong2"}, {"mkyong3", "mkyong4"}};
        PrintUtils.print(strArrayDeep);

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

    }
}

Output

Terminal

[ "Java", "Node", "Python", "Ruby" ]
[ 1, 3, 5, 7, 9 ]
[ [ "mkyong1", "mkyong2" ], [ "mkyong3", "mkyong4" ] ]
[ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6, 8, 10 ] ]

5. References

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
5 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
zemiak
4 years ago

it can also be described here how to print an Integer[] array

Tokala Sai Teja
6 years ago

public static void printArray(Object[] R){
System.out.println(Arrays.deepToString(R).replaceAll(“],”, “],” + System.getProperty(“line.separator”)));
}

anurag
6 years ago

this article is very helpful for everyone who want to print an array.
thank you for this nice post

Vsp
2 years ago

Wont print one by one element and it prints object value only. So you sample output is wrong.
Arrays.stream(arrayInt).forEach(System.out::println);

Kannan
2 years ago

Thanks Mkyong for sharing the detail. its quite useful