考虑这个二维数组
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类型,因此具有该声明。如果您在另一个内循环中进行迭代,则将得到以下类型:-