我正在尝试做这样的事情:
Stream<Object> stream = IntStream.of(...)
.flatMapToObj(i -> getStreamOfObjects(i));
不幸的是,即使在Java 9中,IntStream.flatMapToObj()
也不存在。
答案 0 :(得分:13)
为什么被遗漏了?
API提供可重用的构建块。此处的相关构建基块为mapToObj
,flatMap
,mapToObj
。通过这些,您可以实现您想要的效果:将流映射到对象,然后获得平面地图。提供构建块的排列是不切实际的,也很难扩展。
建议的解决方法是什么?
如前所述,请使用可用的构建基块(flatMap
+ Stream<Object> stream = IntStream.of(...)
.mapToObj(i -> Stream.of(...))
.flatMap(...);
):
url
答案 1 :(得分:8)
只需写下
IntStream.of(...).mapToObj(i -> getStreamOfObjects(i)).flatMap(stream -> stream)
答案 2 :(得分:8)
如果你不介意装箱每个int
值的费用,那么使用盒装流就可以了。
Stream<Object> stream = IntStream.of(...).boxed().flatMap(i -> getStreamOfObjects(i));