Я новичок в Java 8 Stream API и на самом деле не понимаю, почему мой код не работает:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Stream.iterate(0, x -> x+3)
.filter(x -> x>10 && x<100).peek(System.out::println)
.collect(Collectors.toList());
numbers.forEach(System.out::println);
}
}
Как я понимаю "лень" потоков я написал:
Создать поток с числами, кратными 3
отфильтруйте его и дайте мне поток чисел из диапазона (10, 100)
собрать этот поток в список
Как я вижу, есть некоторая проблема с бесконечным циклом, поэтому peek() печатает число из диапазона (12, 99), что нормально, но после этого снова печатает числа из (11, 98) и т. д. Не могли бы вы объяснить, где я сделал ошибка?