List<Integer> integer = Stream.generate(new Supplier<Integer>() {
int i = 0 ;
@Override
public Integer get() {
return ++i;
}
}).filter(j -> j < 5)
.limit(10) // Note the call to limit here
.collect(Collectors.toList());
Счетчик ожиданий, вызов collect
никогда не возвращается. Значение limit
до filter
дает ожидаемый результат. Зачем?Почему Stream.limit не работает в этом фрагменте?
Кстати, вы можете использовать 'Stream.iterate (1, i -> i + 1) .filter (...) ...' вместо этого напуганного поставщика. –
@AlexisC. Я не знал об этом API. Благодаря! – Vitaliy
Или лучше, IntStream.range(). –