将字节数组转换为 IntStream 的最佳方法是什么?
2022-09-03 00:07:19
Java 8 具有 java.util.stream.Stream 和 java.util.stream.IntStream 类型。java.util.Arrays 有一个方法
IntStream is = Arrays.stream(int[])
但是没有这样的方法从byte[],short[]或char[]制作IntStream,将每个元素加宽为int。有没有一种习惯用语/首选方法从byte[]创建IntStream,这样我就可以以一种功能方式对字节数组进行操作?
当然,我可以简单地手动将byte[]转换为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();
}
但由于复制源,两者都不是很实用。
似乎也没有一种简单的方法可以将输入流(或在本例中为ByteArrayInputStream)转换为IntStream,这对于在功能上处理输入流非常有用。(明显的遗漏?
有没有一种功能更强大、高效且不复制的方法?