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