有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么没有IntStream。flatMapToObj()?

我正在尝试这样做:

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

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

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

共 (3) 个答案

  1. # 1 楼答案

    Why was it was left out?

    API提供了可重用的构建块。这里的相关构建块是IntStreammapToObjflatMap。通过这些,您可以实现您想要的:将流中的对象映射到对象,然后获得平面贴图。提供构建块的排列是不现实的,而且更难扩展

    What's a recommended workaround?

    如前所述,使用可用的构建块(mapToObj+flatMap):

    Stream<Object> stream = IntStream.of(...)
        .mapToObj(i -> Stream.of(...))
        .flatMap(...);
    
  2. # 2 楼答案

    如果您不介意装箱每个int值的成本,那么使用装箱流是可行的

    Stream<Object> stream = IntStream.of(...).boxed().flatMap(i -> getStreamOfObjects(i));
    
  3. # 3 楼答案

    只要写

     IntStream.of(...).mapToObj(i -> getStreamOfObjects(i)).flatMap(stream -> stream)