Найти в Дзене

Как создать бесконечный цикл в Java

Часто, люди, начинающие работать с stream в Java, не до конца понимают как именно они работают и что значат терминальные операции.

К примеру, мы хотим создать стрим и вывести первые 100 элементов. Это можно сделать следующими способами:

Создаем стрим

Stream infiniteStream = Stream.iterate(0, i -> i + 1);
infiniteStream.limit(100).forEach(System.
out::println);

Все отлично, напечатаются числа от 0 до 99.

Что будет, если мы удалим limit? Как раз таки мы и получим бесконечный цикл через stream. Это работает, хотя можно подумать, что у нас есть терминальная операция и якобы пока она не сработает стрим не запустится. Но это не совсем так, сримы в Java ленивые, поэтому мы получаем вот такое поведение.

Еще пару способов сделать бесконечный цикл:

//Через рандом
Random random = new Random();
random.ints().forEach(System.
out::println);
//Через генератор
IntStream.
generate(random::nextInt).forEach(System.out::println);