shm*_*sel 11 java java-8 java-stream
我正在尝试做这样的事情:
Stream<Object> stream = IntStream.of(...)
.flatMapToObj(i -> getStreamOfObjects(i));
Run Code Online (Sandbox Code Playgroud)
不幸的是,IntStream.flatMapToObj()
即使在Java 9中也不存在.
Sto*_*ica 13
为什么被遗漏了?
API提供可重用的构建块.这里的相关积木是IntStream
,mapToObj
,flatMap
.通过这些,您可以实现您想要的效果:将流映射到对象,然后获得平面地图.提供构建块的排列是不实际的,并且难以扩展.
什么是推荐的解决方法?
如前所述,使用可用的构建块(mapToObj
+ flatMap
):
Stream<Object> stream = IntStream.of(...)
.mapToObj(i -> Stream.of(...))
.flatMap(...);
Run Code Online (Sandbox Code Playgroud)
写吧
IntStream.of(...).mapToObj(i -> getStreamOfObjects(i)).flatMap(stream -> stream)
Run Code Online (Sandbox Code Playgroud)
如果你不介意装箱每个int
值的成本,使用盒装流将有效.
Stream<Object> stream = IntStream.of(...).boxed().flatMap(i -> getStreamOfObjects(i));
Run Code Online (Sandbox Code Playgroud)