【发布时间】:2017-02-14 11:30:05
【问题描述】:
没有很好的方法将给定的boolean[] foo 数组转换为 Java-8 中的流在一个语句中,或者我遗漏了什么?
(我不会问为什么?,但这真的很令人费解:为什么不为所有原始类型添加流支持?)
提示: Arrays.stream(foo) 不起作用,boolean[] 类型没有这种方法。
【问题讨论】:
-
确实,Java 8 只为
int、long和double提供了专门的原始流,而Arrays.stream不接受boolean[]。我想你必须把它装箱。 -
在这里使用
BitSet会比使用数组更有用吗? -
@Fildor:是的,您可以对位集进行流操作。但是,结果可能会有所不同,因为您正在流式传输这些位(即它们的位置编号)。令人惊讶的是,障碍在另一边:没有简洁的方法可以将
boolean[]数组转换为BitSet。 -
希望,链接的问答仍然有帮助。创建
BooleanStream也意味着创建PrimitiveIterator.OfBoolean、OptionalBoolean、BooleanFunction<T>、BooleanPredicate(或者我们为此滥用BooleanUnaryFunction?)、BooleanBinaryOperator、BooleanToIntFunction、BooleanToLongFunction、BooleanToDoubleFunction、BooleanConsumer、(不知什么原因,存在BooleanSupplier)、ObjBooleanConsumer、BooleanSummaryStatistics等 -
@Holger,BooleanSupplier 完成了
(Object|int|long|double|void) -> (Object|int|long|double|void|boolean)函数的矩阵:所有这 30 个函数实际上都存在于 JDK 中,并且似乎没有提供其他一/零参数函数。所以BooleanSupplier看起来很合理。
标签: java java-8 java-stream