Java 8 Stream API IntStream, DoubleStream, LongStream

Posted by dogukanhan on May 11, 2019 · 2 mins read

Stream of Primitives

Stream Generic Type olduğundan dolayı, Primitive değişkenlerin varolduğu bir Stream’i diğerleri gibi oluşturamayız, primitive değişkenlerin yer aldığı bir Stream oluşturmak istiyorsak bunun için özel olarak yazılmış IntStream, DoubleStream ve LongStream interface’lerini kullanabiliriz.

.of Metotu kullanarak Stream Oluşturma

IntStream.of(1,2,3,4);
LongStream.of(1,2,3,4,5L);
DoubleStream.of(1.2,3.4,5,6.4);;

.range .rangeClosed() Metotu Kullanarak Stream Oluşturma

Range içerisinde belirtilen sayıdan artan şekilde son sayıya kadar oluşan artimatik dizinin Stream’i yaratılmaktadır.
RangeClosed kullanıldığında son belirtilen sayı’da dahil edilmektedir. Range’de ise son belirtilen sayıya kadar olan sayı aralığı kullanılır.
Range ve RangeClosed Metotu DoubleStram için kullanılamaz.

RangeClosed kullanıldığında son belirtilen sayı’da dahil edilmektedir. Range’de ise son belirtilen sayıya kadar olan sayı aralığı kullanılır.
Range ve RangeClosed Metotu DoubleStram için kullanılamaz.

IntStream.range(1,5);
LongStream.range(1,5);

Iterate Metotu Kullanarak Stream Oluşturma

Iterate metotu ilk paremetere olarak başlangıç değeri ve ikinci paremetre olarak bir sonraki değeri üretmek için gerekli işlemi alarak sonsuza giden bir seri üretmektedir. Bu yüzden limit metotu ile bu Stream’i limitlemek gerekebilir.

IntStream.iterate(10,x->x+2).limit(10);
LongStream.iterate(1L,x->x+5).limit(100);
DoubleStream.iterate(0,x->x+0.1).limit(100);

Generate Kullanarak Stream Oluşturma

Generate metotu iterate metotuna benzer fakat yeni değer üretirken bir önceki değeri kullanmaz. Rastgele değer üretimi buna örnek olabilir.

Random rnd = new Random();
IntStream.generate(()->rnd.nextInt()).limit(10);
LongStream.generate(()->rnd.nextLong()).limit(100);
DoubleStream.generate(()->rnd.nextDouble()).limit(100);

Rastgele sayı içeren bir Stream oluştururken direk Random classı metotları kullanılabilir. IntStream, LongStream ve DoubleStream oluşturabilir.

Random rnd = new Random();
       rnd.ints(); // IntStream
       rnd.longs(); // LongStream
       rnd.doubles(); // DoubleStream

Kaynak: