Java-8:要流式传输的布尔基元数组?

2022-09-01 01:05:20

在Java-8中,没有一种很好的方法可以在一个语句中将给定的数组转换为流,或者我错过了什么?boolean[] foo

(我不会问为什么?,但这确实难以理解:为什么不为所有基元类型添加流支持?

提示:不会工作,没有这样的类型方法。Arrays.stream(foo)boolean[]


答案 1

给定用途boolean[] foo

Stream<Boolean> stream = IntStream.range(0, foo.length)
                                  .mapToObj(idx -> foo[idx]);

请注意,每个布尔值都会被装箱,但这通常不是一个大问题,因为布尔值的装箱不会分配额外的内存(仅使用预定义的值之一 - 或 )。Boolean.TRUEBoolean.FALSE


答案 2

您可以使用番石榴的布尔类

Stream<Boolean> stream = Booleans.asList(foo).stream();

这是一种非常有效的方法,因为返回数组的包装器并且不创建任何副本。Booleans.asList


推荐