【发布时间】:2013-08-30 12:03:21
【问题描述】:
在许多其他语言中,例如。 Haskell,很容易多次重复一个值或函数,例如。获取值 1 的 8 个副本的列表:
take 8 (repeat 1)
但是我在Java 8中还没有发现这个。Java 8的JDK中有这样的功能吗?
或者其他等价于范围的东西
[1..8]
这似乎可以替代 Java 中的冗长语句,例如
for (int i = 1; i <= 8; i++) {
System.out.println(i);
}
拥有类似的东西
Range.from(1, 8).forEach(i -> System.out.println(i))
虽然这个特定的示例实际上看起来并不简洁...但希望它更具可读性。
【问题讨论】:
-
你研究过Streams API吗?就 JDK 而言,这应该是您最好的选择。它有一个range 函数,这是我目前发现的。
-
@MarkoTopolnik Streams 类has been removed(更准确地说,它已被拆分为其他几个类,并且一些方法已被完全删除)。
-
你调用 for 循环很冗长!幸好在 Cobol 时代你不在身边。 Cobol 中使用了 10 多个声明性语句来显示升序数字。现在的年轻人并不欣赏他们拥有的有多好。
-
@GilbertLeBlanc 冗长与此无关。循环是不可组合的,流是。循环导致不可避免的重复,而流允许重用。因此,流在数量上是比循环更好的抽象,应该是首选。
-
@GilbertLeBlanc,我们不得不在雪地里赤脚编码。