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.TRUEBoolean.FALSE )。

你可以使用Guava的Booleans类 :

 Stream stream = Booleans.asList(foo).stream(); 

这是一种非常有效的方法,因为Booleans.asList返回数组的包装器并且不进行任何复制。