В Java нет простой конструкции для повтора чего-либо N-ого количества раз. Конечно, мы можем создать цикл for, но в подавляющем большинстве случаев нам совершенно все равно, что за переменную мы создаем в цикле. Мы просто хотим, чтобы некоторая часть кода была повторена N раз и все.
С появлением лямбда-выражений в Java 8 вы можете использовать что-то наподобие этого:
public class RepeatDemo {
public static void main(String[] args) {
// Повтор одной строки
repeat(10, () -> System.out.println("HELLO"));
// Повтор нескольких строк
repeat(10, () -> {
System.out.println("HELLO");
System.out.println("WORLD");
});
}
static void repeat(int n, Runnable r) {
for (int i = 0; i < n; i++)
r.run();
}
}
Вероятно, это не радует глаз или не так очевидно, как старый добрый цикл for, но зато вы избавляетесь от лишней переменной в цикле. Если бы только Java 8 сделала еще шаг вперед и обеспечила бы аргументам в лямбда-выражениях "шоколадный" синтаксис, тогда бы мы получили что-то наподобие Scala/Groovy кода, что сделало бы код куда более наглядным. Например:
// Ну разве не здорово было бы иметь такую конструкцию в Java?
repeat(10) {
System.out.println("HELLO");
System.out.println("WORLD");
}
Источник
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ