Java-8:要流式传输的布尔基元数组?
2022-09-01 01:05:20
在Java-8中,没有一种很好的方法可以在一个语句中将给定的数组转换为流,或者我错过了什么?boolean[] foo
(我不会问为什么?,但这确实难以理解:为什么不为所有基元类型添加流支持?
提示:不会工作,没有这样的类型方法。Arrays.stream(foo)
boolean[]
在Java-8中,没有一种很好的方法可以在一个语句中将给定的数组转换为流,或者我错过了什么?boolean[] foo
(我不会问为什么?,但这确实难以理解:为什么不为所有基元类型添加流支持?
提示:不会工作,没有这样的类型方法。Arrays.stream(foo)
boolean[]
给定用途boolean[] foo
Stream<Boolean> stream = IntStream.range(0, foo.length)
.mapToObj(idx -> foo[idx]);
请注意,每个布尔值都会被装箱,但这通常不是一个大问题,因为布尔值的装箱不会分配额外的内存(仅使用预定义的值之一 - 或 )。Boolean.TRUE
Boolean.FALSE
您可以使用番石榴的布尔类
:
Stream<Boolean> stream = Booleans.asList(foo).stream();
这是一种非常有效的方法,因为返回数组的包装器并且不创建任何副本。Booleans.asList