为什么没有IntStream.flatMapToObj()?

时间:2016-12-23 05:40:25

标签: java java-8 java-stream

我正在尝试做这样的事情:

Stream<Object> stream = IntStream.of(...)
        .flatMapToObj(i -> getStreamOfObjects(i));

不幸的是,即使在Java 9中,IntStream.flatMapToObj()也不存在。

  1. 为什么遗漏了?
  2. 推荐的解决方法是什么?

3 个答案:

答案 0 :(得分:13)

  

为什么被遗漏了?

API提供可重用的构建块。此处的相关构建基块为mapToObjflatMapmapToObj。通过这些,您可以实现您想要的效果:将流映射到对象,然后获得平面地图。提供构建块的排列是不切实际的,也很难扩展。

  

建议的解决方法是什么?

如前所述,请使用可用的构建基块(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));