我的变量类型为byte[]
,而不是Byte[]
。
我正在尝试使用Arrays::stream
方法来处理带有lambda的数组。
但是,没有Arrays::stream
这样的重新加载byte[]
作为参数。
重新加载Arrays::stream(T[] data)
也不起作用。
我猜这是因为byte []是java素数类型byte的数组,不能将其视为通用类型参数T
。
我试图将byte[]
强制转换为Byte[]
或int[]
,但这些方法同样都失败了。
答案 0 :(得分:5)
您可以创建一个IntStream
:
byte[] bytearr = new byte[10];
IntStream ints = IntStream.range (0, bytearr.length).map (i->bytearr[i]);
或Stream<Byte>
:
byte[] bytearr = new byte[10];
Stream<Byte> bytes = IntStream.range (0, bytearr.length).mapToObj (i->bytearr[i]);
答案 1 :(得分:1)
您不能,Java中没有rsync
,只有ByteStream
,Stream<T>
,IntStream
和DoubleStream
。
只需使用常规循环即可完成此操作,除非您想手动实现该类。
或者,您可以将其转换为LongStream
,但这将浪费大量时间和内存。与转换为Byte[]
和使用int[]
相同,但是成本比IntStream
小。
但是除非您被迫这样做,否则没有理由这样做,否则对于较大的阵列,它可能会极大地影响性能和内存占用。