Java 8 имеет типы java.util.stream.Stream и java.util.stream.IntStream. java.util.Arrays имеет метод
IntStream is = Arrays.stream(int[])
но нет такого метода, чтобы сделать IntStream из байта [], short [] или char [], расширяя каждый элемент до int. Есть ли идиоматический/предпочтительный способ создания IntStream из байта [], поэтому я могу работать с байт-массивами в функциональном режиме?
Я могу, конечно, тривиально преобразовать байт [] в int [] вручную и использовать Arrays.stream(int []) или использовать IntStream.Builder:
public static IntStream stream(byte[] bytes) {
IntStream.Builder isb = IntStream.builder();
for (byte b: bytes)
isb.add((int) b);
return isb.build();
}
но ни одна из них не очень функциональна из-за копирования источника.
Также нет простого способа конвертировать InputStream (или в этом случае ByteArrayInputStream) в IntStream, что было бы очень полезно для обработки InputStream функционально. (Яркое упущение?)
Есть ли более эффективный способ, который эффективен и не копирует?