How is IntStream
, DoubleStream
, or LongStream
better than regular stream in Java 8?
Do these threads have high performance or
Stream<Integer>
etc. have to work with boxed values (Integer
instead of primitive int
) which takes significantly more memory and usually a lot of boxing/unboxing operations (depending on your code). Why only Int/Double/Long
? Just because they were expected to be used most often.
Same applies to OptionalInt
and friends and all the functional interfaces.
For collections (lists/maps/sets) there are many third-party libraries providing primitive specialization for the same reason. Really the problem there is even more acute because with streams you don't (usually; sorted()
is a counter-example) need to store many values in memory.