Как использовать потоковый API для повторяющихся действий - PullRequest
0 голосов
/ 04 сентября 2018

Я хотел бы знать, как сократить свой код с помощью 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 голосов
/ 04 сентября 2018

Потоки здесь не очень полезны, простой цикл был бы лучше IMO. Но если бы вы действительно хотели, вы могли бы написать это через лямбду (игнорируя 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));
...