如何使用流API进行可重复的操作

时间:2018-09-04 08:49:08

标签: java java-8 java-stream

我想知道如何在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);

但是这里我将一个整数值传递给方法。有人可以给我一些提示或答案吗?

1 个答案:

答案 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));