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