为什么没有IntStream.flatMapToObj()?
2022-09-01 22:55:32
我正在尝试做这样的事情:
Stream<Object> stream = IntStream.of(...)
.flatMapToObj(i -> getStreamOfObjects(i));
不幸的是,即使在Java 9中也不存在。IntStream.flatMapToObj()
- 为什么它被排除在外?
- 建议的解决方法是什么?
我正在尝试做这样的事情:
Stream<Object> stream = IntStream.of(...)
.flatMapToObj(i -> getStreamOfObjects(i));
不幸的是,即使在Java 9中也不存在。IntStream.flatMapToObj()
为什么它被排除在外?
该 API 提供可重用的构建基块。此处的相关构建基块是 、 、 。从这些中,您可以实现所需的目标:将一个 in 流映射到对象,然后获得一个平面映射。提供构建块的排列是不切实际的,而且更难扩展。IntStream
mapToObj
flatMap
建议的解决方法是什么?
如前所述,使用可用的构建基块 ( + ):mapToObj
flatMap
Stream<Object> stream = IntStream.of(...)
.mapToObj(i -> Stream.of(...))
.flatMap(...);
如果您不介意对每个值进行装箱的成本,则使用盒装流将起作用。int
Stream<Object> stream = IntStream.of(...).boxed().flatMap(i -> getStreamOfObjects(i));