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