创建从 byte[] 到原始字节流的 Stream

The*_*tor 5 java

我有一个byte[],我想制作一个字节流。

对于int[]andlongdouble,我在 Arrays 类中看到了方法:

Arrays.stream(int[] array)
Arrays.stream(long[] array)
Arrays.stream(double[] array)
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到任何 method Arrays.stream(byte[] array)

那么,将字节原语流作为实际字节获取的最简单、最简洁的方法是什么?

我需要对 byte[] 进行转换,并且需要一个字节流来使用所有 Stream 函数来完成此操作(不,我不想将它们全部转换为整数。)

谁有好的解决办法吗?

附言。其他人从微控制器 API 向我提供 byte[] ...所以如果没有必要,我不想使用其他数据类型。

谢谢。

ysh*_*vit 5

AStream<Byte>与原语的 ByteStream 一样好,因为Byte#valueOf返回装箱值的缓存实例(并且编译器为您处理装箱和拆箱)。那么唯一的技巧就是把你的byte[]变成Stream<Byte>.

一种方法是创建IntStream索引,然后将这些索引映射到您的查找中byte[]

byte[] byteArray = "hello".getBytes();
Stream<Byte> byteStream = IntStream.range(0, byteArray.length)
    .mapToObj(i -> byteArray[i]);
Run Code Online (Sandbox Code Playgroud)

我不知道 JDK 中有任何帮助器方法可以为您执行此操作。