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());
Contrariamente alle mie aspettative, la chiamata collect
non restituisce mai. L'impostazione limit
prima dello filter
produce il risultato previsto. Perché?Perché Stream.limit non funziona come previsto in questo snippet?
A proposito, è possibile utilizzare 'Stream.iterate (1, i -> i + 1) .filter (...) ...' invece di questo fornitore funky. –
@AlexisC. Non ero a conoscenza di questa API. Grazie! – Vitaliy
O meglio, IntStream.range(). –