java stream 的 `toarray()` 默认返回 `object[]`,无法直接转为原始类型数组 `boolean[]`,需使用带生成器的重载方法或中间转换。
在 Java 中,Stream
toArray() 方法有两个重载版本:
✅ 正确写法(推荐):
Listclass1List = /* ... */; boolean[] isAvailableArray = class1List.stream() .mapToBoolean(Class1::isAvailable) // 关键:使用 mapToBoolean 转为 BooleanStream .toArray(); // BooleanStream.toArray() 直接返回 boolean[]
⚠️ 注意:必须使用 mapToBoolean(而非 map),因为只有原始类型专用流(如 BooleanStream、IntStream)才提供返回对应原始数组的 toArray() 方法。若误用 map(e -> e.isAvailable()),得到的是 Stream
? 替代方案(不推荐,冗余且低效):
Boolean[] boxedArray = class1List.stream()
.map(Class1::isAvailable)
.toArray(Boolean[]::new);
boolean[] isAvailableArray = Arrays.stream(boxedArray)
.mapToBoolean(Boolean::booleanValue)
.toArray();? 总结: