当前位置: 首页 > 面试题库 >

如何使用Java 8循环和打印2D数组

裴兴言
2023-03-14
问题内容

考虑这个二维数组

String[][] names = { {"Sam", "Smith"},
                     {"Robert", "Delgro"},
                     {"James", "Gosling"},
                   };

使用经典方式,如果我们要访问二维数组的每个元素,则需要使用两个for循环遍历二维数组。

for (String[] a : names) {
    for (String s : a) {
        System.out.println(s);
    }
}

是否有使用Java 8功能(Lambda,方法参考,Streams等)循环和打印2D数组的新方法?

到目前为止,我尝试过的是:

Arrays.asList(names).stream().forEach(System.out::println);

输出:

[Ljava.lang.String;@6ce253f1
[Ljava.lang.String;@53d8d10a
[Ljava.lang.String;@e9e54c2

问题答案:

保持与for循环相同的输出:

Stream.of(names)
    .flatMap(Stream::of)
        .forEach(System.out::println);

(请参阅Stream#flatMap。)

也类似:

Arrays.stream(names)
    .map(a -> String.join(" ", a))
        .forEach(System.out::println);

产生如下输出:

山姆·史密斯
罗伯特·德尔格罗
詹姆斯·高斯林

(请参阅String#join。)

也:

System.out.println(
    Arrays.stream(names)
        .map(a -> String.join(" ", a))
            .collect(Collectors.joining(", "))
);

产生如下输出:

山姆·史密斯,罗伯特·德尔格罗,詹姆斯·高斯林

(请参阅Collectors#joining。)

联接是Java 8讨论较少但仍然很棒的新功能之一。



 类似资料:
  • 我正在尝试编写一个程序,打印一个2d数组,其中包含100-10000范围内的随机数,并打印出数组中的最大值、平均值和最小值。该程序将询问用户行数和列数,并在该数组中打印随机数。 这是我的代码:

  • 对于上述代码,我得到的输出为: 但我的期望是得到。 你能指导我实现这一点吗?

  • 问题内容: 我正在寻找一个实用程序,它将使用正确的列长将矩形String [] []打印到人类可读的表中。 问题答案: 如果您想要类似于MySQL命令行客户端输出的内容,则可以使用以下内容: 并像这样使用它: 上面的代码将产生以下输出:

  • 我试图打印我的所有4行在我的应用程序中保持得分,我目前只是让它打印我的数组的所有索引。有没有更干净的方法打印出一行索引?

  • 如何在有向加权图中找到负循环。我知道Bellman-Ford算法是如何工作的,它告诉我是否存在可达到的负循环。但它没有明确地命名它。 如何获得循环的实际路径v1,v2,…vk,v1? 在应用标准算法后,我们已经进行了n−1次迭代,不可能有进一步的改进。如果我们仍然可以降低到节点的距离,则存在负循环。 假设edge(v, u)是bellman ford算法在第n次迭代中失败的边缘-d(u)

  • 问题内容: 这是Java代码的片段: 它显示5。但是为什么声明了for循环的声明部分,却没有声明? 在uu上,您将引用2D数组…这不是一项作业。我正在准备Java认证。干杯 问题答案: 由于你是一个。因此,当您对其进行迭代时,您将首先获得,然后可以对该数组进行迭代以获取单个元素。 因此,您的外部循环具有as类型,因此具有该声明。如果您在另一个内循环中进行迭代,则将得到以下类型:-