打印 Java 数组的最简单方法是什么?

问:

在 Java 中,数组不会覆盖 toString(),因此如果您尝试直接打印一个,则会得到 className + ‘@’ + 数组 hashCode 的十六进制,如 Object.toString() 所定义:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

但通常情况下,我们实际上想要更像 [1, 2, 3, 4, 5] 的东西。最简单的方法是什么?以下是一些示例输入和输出:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

答1:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

从 Java 5 开始,您可以将 Arrays.toString(arr) 或 Arrays.deepToString(arr) 用于数组中的数组。请注意,Object[] 版本对数组中的每个对象调用 .toString()。输出甚至以您要求的确切方式进行装饰。

例子:

简单数组:String[] array = new String[] {“John”, “Mary”, “Bob”}; System.out.println(Arrays.toString(array));输出:[约翰,玛丽,鲍勃]

嵌套数组:String[][] deepArray = new String[][] {{“John”, “Mary”}, {“Alice”, “Bob”}}; System.out.println(Arrays.toString(deepArray)); //输出:[[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922] System.out.println(Arrays.deepToString(deepArray));输出:[[约翰,玛丽],[爱丽丝,鲍勃]]

双数组:双[] 双数组 = { 7.0, 9.0, 5.0, 1.0, 3.0 }; System.out.println(Arrays.toString(doubleArray));输出:[7.0, 9.0, 5.0, 1.0, 3.0]

int 数组:int[] intArray = { 7, 9, 5, 1, 3 }; System.out.println(Arrays.toString(intArray));输出:[7、9、5、1、3]

如果我们有一个字符串数组,并且想要简单的输出怎么办?比如:String[] array = {"John", "Mahta", "Sara"},我们想要这个没有括号和逗号的输出:John Mahta Sara?

@Hengameh:还有其他几种方法可以做到这一点,但我最喜欢的是这个: javahotchocolate.com/notes/java.html#arrays-tostring 。

仅供参考,Arrays.deepToString() 仅接受 Object [](或扩展 Object 的类数组,例如 Integer,因此它不适用于 int [] 类型的原始数组。但 Arrays.toString() 有效适用于原始数组。

@Hengameh 有一种专用的方法。 System.out.println(String.join(" ", new String[]{"John", "Mahta", "Sara"})) 将打印 John Mahta Sara。

不要忘记“import java.util.Arrays;”

答2:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

始终首先检查标准库。

import java.util.Arrays;

然后尝试:

System.out.println(Arrays.toString(array));

或者如果您的数组包含其他数组作为元素:

System.out.println(Arrays.deepToString(array));

@Hengameh 如今使用 Java 8:String.join(" ", Arrays.asList(array))。 doc

答3:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

很高兴知道,但是,至于“总是先检查标准库”,我永远不会偶然发现 Arrays.toString( myarray ) 的把戏

–因为我专注于 myarray 的类型以了解如何执行此操作。我不想遍历这件事:我想要一个简单的调用来使它类似于我在 Eclipse 调试器中看到的那样,而 myarray.toString() 只是没有这样做。

import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );

答4:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

在 JDK1.8 中,您可以使用聚合操作和 lambda 表达式:

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

// #3
Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob
*/

答5:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

数组.toString

作为直接答案,使用 Arrays.toString 和 Arrays.deepToString 方法的 the solution provided by several, including @Esko 是最好的。

Java 8 - Stream.collect(joining()), Stream.forEach

下面我尝试列出一些其他建议的方法,并尝试进行一些改进,其中最值得注意的添加是使用 Stream.collect 运算符,使用 joining Collector 来模仿 String.join 是什么正在做。

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);

如果你使用 IntStream.of(ints).forEach(System.out::print);我不认为它会在新行打印..

答6:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

从 Java 8 开始,还可以利用 String class 提供的 join() 方法打印出数组元素,不带括号,并由选择的分隔符分隔(这是下面示例中的空格字符):

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

输出将是“嘿,朋友!”。

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

答7:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

在 Java 8 之前

我们可以使用 Arrays.toString(array) 打印一维数组,使用 Arrays.deepToString(array) 打印多维数组。

爪哇 8

现在我们有了 Stream 和 lambda 的选项来打印数组。

打印一维数组:

public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

输出是:

[1, 2, 3, 4, 5] [约翰,玛丽,鲍勃] 1 2 3 4 5 约翰玛丽鲍勃

打印多维数组 如果我们想打印多维数组,我们可以使用 Arrays.deepToString(array) 作为:

public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
} 

现在要注意的是方法 Arrays.stream(T[]),在 int[] 的情况下返回 Stream<int[]>,然后方法 flatMapToInt() 将流的每个元素映射到通过应用提供的映射函数生成的映射流的内容到每个元素。

输出是:

[[11, 12], [21, 22], [31, 32, 33]] [[John, Bravo], [Mary, Lee], [Bob, Johnson]] 11 12 21 22 31 32 33 John Bravo Mary李·鲍勃·约翰逊

答8:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

如果您使用的是 Java 1.4,则可以改为:

System.out.println(Arrays.asList(array));

(当然,这也适用于 1.5+。)

不幸的是,这只适用于对象数组,而不适用于基元数组。

答9:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

Arrays.deepToString(arr) 仅打印在一行上。

int[][] table = new int[2][2];

要真正将表格打印为二维表格,我必须这样做:

System.out.println(Arrays.deepToString(table).replaceAll("],", "]," + System.getProperty("line.separator")));

似乎 Arrays.deepToString(arr) 方法应该采用分隔符字符串,但不幸的是它没有。

也许使用 System.getProperty("line.separator");而不是 rn 所以它也适用于非 Windows。

答10:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

for(int n: someArray) {
    System.out.println(n+" ");
}

这样你最终会得到一个空白空间;)

@ matthiad .. 这一行将避免以空白结尾 System.out.println(n+ (someArray.length == n) ? "" : " ");

@MuhammadSuleman 那不起作用,因为这是一个 for-each 循环。 n 是数组中的实际值,而不是索引。对于常规的 for 循环,它也是 (someArray.length - 1) == i,因为它会在 i 等于数组长度时中断。

答11:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

在 Java 中打印数组的不同方法:

简单方式 List list = new ArrayList(); list.add(“一个”); list.add(“两个”); list.add(“三”); list.add(“四”); // 在控制台打印列表 System.out.println(list);

输出:[一、二、三、四]

使用 toString() String[] array = new String[] { “One”, “Two”, “Three”, “Four” }; System.out.println(Arrays.toString(array));

输出:[一、二、三、四]

打印数组 String[] arr1 = new String[] { “Fifth”, “Sixth” }; String[] arr2 = new String[] { “Seventh”, “Eight” }; String[][] arrayOfArray = new String[][] { arr1, arr2 }; System.out.println(arrayOfArray); System.out.println(Arrays.toString(arrayOfArray)); System.out.println(Arrays.deepToString(arrayOfArray));

输出:[[Ljava.lang.String;@1ad086a [[Ljava.lang.String;@10385c1, [Ljava.lang.String;@42719c] [[第五、第六]、[第七、第八]]

资源:Access An Array

原文链接:https://www.huntsbot.com/qa/yOP4/whats-the-simplest-way-to-print-a-java-array?lang=zh_CN&from=csdn

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>