java stream 的 `toarray()` 默认返回 object[],无法直接转为基本类型 boolean[],需使用带生成器的重载方法或先收集为 list 再转换。
在 Java 中,Stream
Stream
✅ 正确解决方案如下:
Listclass1List = ...; boolean[] isAvailableArray = class1List.stream() .mapToBoolean(Class1::isAvailable) // 关键:使用 mapToBoolean 得到 BooleanStream .toArray(); // BooleanStream.toArray() 返回 boolean[]
? 注意:必须配合 mapToBoolean()(而非 map())才能获得 BooleanStream,其 toArray() 专为生成 boolean[] 设计。
Boolean[] boxedArray = class1List.stream()
.map(Class1::isAvailable) // Stream
.toArray(Boolean[]::new); // 显式生成 Boolean[]
// 再手动拆箱(不推荐,有性能开销)
boolean[] primitiveArray = Arrays.stream(boxedArray)
.mapToBoolean(Boolean::booleanValue)
.toArray(); 总结:要生成 boolean[],必须让 Stream 管道最终处于
BooleanStream 上下文,并调用其原生 toArray();任何经过 Stream