简介
问题来源于stackoverflow.
在java语言中,数组是无法重写toString。如果直接打印一个数组,则得到className+'@'+ hashCode数组的十六进制。
int[] a = new int[] { 1, 2, 3 };
System.out.println(a.toString());
String[] s = new String[] { "1" };
System.out.println(s.toString());
[I@f5ac9e4
[Ljava.lang.String;@123ef382
这种输出格式不太友好,希望能转换为一种可读方式。例如[1,2,3]
Arrays.toString
int[] a = new int[] { 1, 2, 3 };
System.out.println(Arrays.toString(a));
//结果 [1, 2, 3]
Arrays.deepToString
String[] deepArray = new String[] {"Alice", "Bob"};
System.out.println(Arrays.deepToString(deepArray));
//结果 [Alice, Bob]
Arrays.asList
System.out.println(Arrays.asList(deepArray));
//结果 [Alice, Bob]
java8
String.join
String[] deepArray = new String[] {"Alice", "Bob"};
System.out.println(String.join(",",deepArray)); ;
//结果 Alice,Bob
Collectors.joining
int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
// 结果 1, 2, 3, 4, 5
函数方式
Stream.forEach
String[] arrayStr = new String[]{"Java ", "Node " , "Python ", "Ruby"};
Arrays.stream(arrayStr).forEach(System.out::print);
//结果 Java Node Python Ruby
String[][] deepArrayStr = new String[][]{{"mkyong1 ", "mkyong2"}, {" mkyong3 ", "mkyong4"}};
Arrays.stream(deepArrayStr).flatMap(x -> Arrays.stream(x)).forEach(System.out::print);
//结果 mkyong1 mkyong2 mkyong3 mkyong4