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

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *