Java-8:boolean原始数组要流吗?
没有很好的方法可以在一个语句中将给定的boolean[] foo
数组转换为Java-8 中的流,或者我错过了什么?
(我不会问为什么? ,但实在是难以理解:为什么不为所有原始类型添加流支持?)
提示: Arrays.stream(foo)
不起作用, boolean[]
类型没有这样的方法。
给定boolean[] foo
使用
Stream stream = IntStream.range(0, foo.length) .mapToObj(idx -> foo[idx]);
请注意,每个布尔值都将被装箱,但它通常不是一个大问题,因为装箱布尔值不会分配额外的内存(只使用预定义值之一 – Boolean.TRUE
或Boolean.FALSE
)。
你可以使用Guava的Booleans
类 :
Stream stream = Booleans.asList(foo).stream();
这是一种非常有效的方法,因为Booleans.asList
返回数组的包装器并且不进行任何复制。