如何在Java中将lambda表达式与字节数组一起使用?

时间:2018-07-12 10:31:40

标签: java lambda

我的变量类型为byte[],而不是Byte[]

我正在尝试使用Arrays::stream方法来处理带有lambda的数组。

但是,没有Arrays::stream这样的重新加载byte[]作为参数。

重新加载Arrays::stream(T[] data)也不起作用。
我猜这是因为byte []是java素数类型byte的数组,不能将其视为通用类型参数T

我试图将byte[]强制转换为Byte[]int[],但这些方法同样都失败了。

2 个答案:

答案 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,只有ByteStreamStream<T>IntStreamDoubleStream

只需使用常规循环即可完成此操作,除非您想手动实现该类。
或者,您可以将其转换为LongStream,但这将浪费大量时间和内存。与转换为Byte[]和使用int[]相同,但是成本比IntStream小。

但是除非您被迫这样做,否则没有理由这样做,否则对于较大的阵列,它可能会极大地影响性能和内存占用。