Iterator, iterable ve Splitator kullanılarak Fibonacci dizisi elemanlarını veren bir Stream oluşturabiliriz. Iterator içerisinde fibonacci algoritmamız yer almaktadır bu sayede bir sonraki elemanın hesaplanması yapılabilir. Iterable ise bir iterator nesnesi döndürmektedir. Splitator ise Stream içerisinde kullanabileceğimiz bir Iterator yapısıdır.
Çok büyük sayılar hesaplanabilmesi için BigInteger kullanılmıştır.
Iterator < BigInteger > fIterator = new Iterator < BigInteger > () { BigInteger before1 = BigInteger.ZERO; BigInteger before2 = BigInteger.ONE; @Override public boolean hasNext() { return true; } @Override public BigInteger next() { BigInteger now = BigInteger.ZERO; now = now.add(before1); now = now.add(before2); before2 = before1; before1 = now; return now; } }; Iterable < BigInteger > iterable = ()-> fIterator; Stream < BigInteger > fibonacciStream = StreamSupport.stream(iterable.spliterator(), false); fibonacciStream.limit(100).forEach(System.out::println);