在许多其他语言中,例如.Haskell,很容易多次重复一个值或函数,例如.获取值为1的8个副本的列表:
take 8 (repeat 1)
Run Code Online (Sandbox Code Playgroud)
但我还没有在Java 8中找到它.在Java 8的JDK中是否有这样的功能?
或者相当于范围的东西
[1..8]
Run Code Online (Sandbox Code Playgroud)
它似乎是Java中冗长语句的明显替代品
for (int i = 1; i <= 8; i++) {
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
有类似的东西
Range.from(1, 8).forEach(i -> System.out.println(i))
Run Code Online (Sandbox Code Playgroud)
虽然这个特殊的例子实际上看起来并不简洁......但希望它更具可读性.
受Adam Bien的博客启发,我想用Java 8将Java 7中的常见迭代替换为更好的迭代.旧代码如下所示:
void repeatUsingJava7(int times) {
for (int i = 0; i < times; i++) {
doStuff();
doMoreStuff();
doEvenMoreStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
......这不太好.所以我用Adam Bein的例子替换它:
void repeatUsingJava8(int times) {
IntStream.range(0, times).forEach(
i -> {
doStuff();
doMoreStuff();
doEvenMoreStuff();
}
);
}
Run Code Online (Sandbox Code Playgroud)
...这是朝着正确方向迈出的一步,但不会使代码更易于阅读,还会引入一个不需要的变量i,以及一对额外的花括号.所以现在我想知道是否有其他方法来编写这个代码,这将使它更好,更容易阅读,主要是使用Java 8.