Java stream library have streams specifically for primitive types like int, long, double etc.
- With primitive streams, values are directly stored in primitives (not in wrapper classes like Integer, Long or Double).
- The rest of primitives like char, short, byte etc will make use existing streams like IntStream, LongStream and DoubleStream.
1. Create IntStream using IntStream.of
IntStream intStream = IntStream.of(1, 3, 5, 7); intStream.forEach(System.out::println); //generate the output of 1, 3, 5, 7 (each digit in new line)
2. Create IntStream using range & rangeClosed method
IntStream stream1to9 = IntStream.range(1, 10); //generate number from 1 to 9 IntStream stream1to10 = IntStream.rangeClosed(1, 10); //generate number from 1 to 10
3. Create IntStream using iterate method
IntStream iterateStream1to10 = IntStream.iterate(1, step -> step + 1).limit(10); // prints 1 to 10 iterateStream1to10.forEach(System.out::println); //generate number from 1 to 10
4. Convert IntStream to Stream<Integer>:
IntStream has boxed method to box the primitives to corresponding wrapper classes.
Stream IntegerStream = IntStream.range(1, 10).boxed();
5. Generate statistics of IntStream :
IntStream stream1to10 = IntStream.rangeClosed(1, 10); double avg = stream1to10.average().getAsDouble(); System.out.println("Avg :"+ avg); IntStream stream1to9 = IntStream.range(1, 10); IntSummaryStatistics statistics = stream1to9.summaryStatistics(); int min = statistics.getMin(); int max = statistics.getMax(); avg = statistics.getAverage(); System.out.println("Min:"+min + " max:"+max + " avg:"+avg); //output : Min:1 max:9 avg:5.0
6. Program – primitive streams examples java8 (IntStream etc)
package org.learn.PrimitiveStreams; import java.util.IntSummaryStatistics; import java.util.stream.IntStream; public class App { public static void main(String[] args) { IntStream intStream = IntStream.of(1, 3, 5, 7); //Print 1 3 5 7 intStream.forEach(System.out::println); IntStream stream1to9 = IntStream.range(1, 10); //Prints 1 to 9 //stream1to9.forEach(System.out::println); IntStream stream1to10 = IntStream.rangeClosed(1, 10); // prints 1 to 10 //stream1to10.forEach(System.out::println); IntStream iterateStream1to10 = IntStream.iterate(1, step -> step + 1).limit(10); // prints 1 to 10 //iterateStream1to10.forEach(System.out::println); //Get avg of stream double avg = stream1to10.average().getAsDouble(); System.out.println("Avg :"+ avg); //Generate statistics of int stream IntSummaryStatistics statistics = stream1to9.summaryStatistics(); int min = statistics.getMin(); int max = statistics.getMax(); avg = statistics.getAverage(); System.out.println("Min:"+min + " max:"+max + " avg:"+avg); } }
Output – Primitive streams examples java8 (IntSummaryStatistics etc)
1 3 5 7 Avg :5.5 Min:1 max:9 avg:5.0