import java.util.function.*; import java.util.stream.*; /** * * @author Sammy Guergachi <sguergachi at gmail.com> */ public class App { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here // fib2 fib3() .parallel() .limit(50) //LongStream .mapToObj(n -> (Long) n) // Stream<Long> // .collect(Collectors.toList()) // List<Long> .forEach(n -> System.out.println(n + " ")); System.out.println(); } static class Node{ final long prev, curr; public Node(long prev, long curr){ this.prev = prev; this.curr = curr; } } static LongStream fib3() { return Stream .iterate( new Node(0,1), a -> new Node(a.curr, a.prev + a.curr)) .mapToLong(a -> a.prev); } static LongStream fib2() { long [] nrs = {0, 1}; return LongStream.generate( () -> { long res = nrs[0]; long next = nrs[0] + nrs[1]; nrs[0] = nrs[1]; nrs[1] = next; return res; }); } static LongStream fib1() { return LongStream.generate(new LongSupplier() { private long curr = 1; private long prev = 0; @Override public long getAsLong() { long toReturn = prev; long next = prev + curr; prev = curr; curr = next; return toReturn; } }); } }