Numeric stream

Numeric stream #

In addition to the interface Stream, Java 8 introduced the interface IntStream (resp. DoubleStream, LongStream) that represents a stream of (unboxed) int (resp. long, double).

It provides native methods such as (sum and average) that are not available for the types Stream<Integer> (resp. Stream<Double>, Stream<Long>).

Conversion #

Warning. The interface IntStream (resp. DoubleStream, LongStream) does not extend the interface Stream.

A instance of Stream<$T$> can be converted to an instance of IntStream (resp. DoubleStream, LongStream) with the instance method Stream.mapToInt.

This method takes as argument a callback method of type

$\qquad T \to$ int

that converts each element of the stream to an int.

Example.

The following method converts a list of cities into an IntStream that contains their zip codes.

IntStream extractZipCodes(List<City> cities){
    return cities.stream()
              .mapToInt(c -> c.zipCode);
}