Java kromě Stream<Object> nabízí i streamy primitivních datových typu. Přesněji řečeno má takové streamy tři:
- IntStream
- DoubleStream
- LongStream
Vytvoření streamu primitivních datových typů
K vytvoření streamu primitivních datových typů je možné, tak jako pro stream objektů, použít metody generate() a iterate().
// IntStream obsahující deset sedmiček. IntStream isg = IntStream.generate(() -> 7).limit(10); // IntStream s elementy 0, 1, 2, 3, 4. IntStream isi = IntStream.iterate(0, i -> i + 1).limit(5); // Nekonečný DoubleStream, který obsahuje náhodná čísla. DoubleStream dsg = DoubleStream.generate(() -> Math.random()); // DoubleStream s elementy 1.1, 2.2, 4.4, 8.8, 17.6. DoubleStream dsi = DoubleStream.iterate(1.1, i -> i + i).limit(5); // Nekonečný LongStream, který obsahuje čísla 9876543210. LongStream lsg = LongStream.generate(() -> 9876543210L); // LongStream obsahující čísla (řády) od 1 miliónu po 1 bilión. LongStream lsi = LongStream.iterate(1_000_000, num -> num * 10).limit(9);
Dalším způsobem je použít statickou metodu of() a do ní uvést výčet hodnot.
IntStream intStream = IntStream.of(1, 3, 5, 7); DoubleStream doubleStream = DoubleStream.of(0.52, 15.24, 7.879); LongStream longStream = LongStream.of(14_854, 4_854);
Stream je možné vytvořit taktéž z pole pomocí statické metody java.util.Arrays.stream().
int[] intArray = { 1, 2, 3, 4}; double[] doubleArray = {12.548, 0.99, 103.1}; long[] longArray = {12, 778_755_441_784L, 1_221}; // IntSteam s elementy 1, 2, 3, 4. IntStream isFromArray = Arrays.stream(intArray); // DoubleStream s elementy 0.99 a 103.1. DoubleStream dsFromArray = Arrays.stream(doubleArray, 1, 3); // LongStream s elementem 1221. LongStream lsFromArray = Arrays.stream(longArray, 2, 3);
IntStream a LongStream mají navíc k dispozici statické metody range() a rangeClosed().
// IntSteam s elementy 0, 1, 2, 3, 4. IntStream isFromRange = IntStream.range(0, 5); // LongStream s elementy 100, 101, 102, 103. LongStream lsFromRange = LongStream.rangeClosed(100, 103);
Zdroj: HORSTMANN, Cay S. Java SE 8 for the really impatient. Upper Saddle River, NJ: Addison-Wesley, 2014, xv, 215 pages. ISBN 0321927761.