我想知道如何在Stream Api的帮助下缩短代码。 假设我有这样的方法:
public static void createFile( String directoryPath, String fileName )
我想用相同的参数调用此方法5次。例如
for (int i = 0; i < 5; i++) {
Utils.createFile(getDirectoryLocation(), "test.txt");
}
我知道我可以做这样的事情:
IntStream.rangeClosed(1, 5).forEach(Utils::someMethod);
但是这里我将一个整数值传递给方法。有人可以给我一些提示或答案吗?
答案 0 :(得分:7)
在这里,流并不是真正有用的,简单的循环会更好。但是,如果您真的想要,则可以通过lambda(忽略x ...)来编写它:
IntStream.rangeClosed(1, 5).forEach(x -> Utils.createFile(getDirectoryLocation(), "test.txt"));
我猜可能还有另外一种丑陋的方式:
Stream.generate(() -> "test.txt")
.limit(5)
.forEach(x -> Utils.createFile(getDirectoryLocation(), x));
或更佳:
Collections.nCopies(5, "test.txt")
.forEach(x -> Utils.createFile(getDirectoryLocation(), x));