// Created on savesnippets.com · https://savesnippets.com/H4nN6MwmMcDYe0 import java.util.*; import java.util.stream.*; class Demo { void example() { // generate — same value (or random) on each call List randoms = Stream.generate(Math::random) .limit(5) .toList(); System.out.println(randoms); // iterate — Fibonacci! Three-arg form has a hasNext predicate (Java 9+) List fibs = Stream.iterate( new long[]{0, 1}, pair -> pair[1] < 1000, // hasNext predicate pair -> new long[]{pair[1], pair[0] + pair[1]} ) .map(p -> p[0]) .toList(); System.out.println(fibs); // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987] // Or with limit List powersOf2 = Stream.iterate(1, n -> n * 2) .limit(10) .toList(); System.out.println(powersOf2); } }