Java 8 Stream – Fibonacci Stream Oluşturma

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);

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir