import java.util.*;
import java.util.stream.*;
import java.util.function.*;
public class App{
public static Stream<Integer> evenNumbersBoxed(){
int [] nr = {0}; // estado partilhado mutável.
return Stream.generate(() -> {int tmp = nr[0]; nr[0]+=2; return tmp;});
}
public static IntStream evenNumbers(){
int [] nr = {0};
return IntStream.generate(() -> {int tmp = nr[0]; nr[0]+=2; return tmp;});
}
public static void main(String [] args) throws Exception{
evenNumbersBoxed().limit(20).forEach(n -> System.out.print(n + " "));
System.out.println();
evenNumbers().limit(20).forEach(n -> System.out.print(n + " "));
System.out.println();
Stream.generate(Math::random).limit(20).forEach(n -> System.out.print(n + " "));
}
}