В чем преимущество IntStream перед обычным Stream? - PullRequest
0 голосов
/ 23 февраля 2019

Как IntStream, DoubleStream или LongStream лучше, чем обычный поток в Java 8?

У этих потоков высокая производительность или, возможно, удобство использования?

1 Ответ

0 голосов
/ 23 февраля 2019

Stream<Integer> и т. Д. Должны работать со значениями в штучной упаковке (Integer вместо примитива int), которые занимают значительно больше памяти и обычно требуют много операций по упаковке / распаковке (в зависимости от вашего кода).Почему только Int/Double/Long?Только потому, что они должны были использоваться чаще всего.

То же самое относится к OptionalInt и друзьям и ко всем функциональным интерфейсам.

Для коллекций (списков / карт / наборов) существует много третьих-партийные библиотеки, обеспечивающие примитивную специализацию по той же причине.На самом деле проблема здесь еще более острая, потому что с потоками вам не нужно (обычно; sorted() является контрпримером) хранить много значений в памяти.

...