java - 将多个索引项转换为流的最简单方法

标签 java java-8 java-stream

给定一堆具有 int size() 方法和 get(int i) 方法的东西,如何才能最轻松地对其进行流式传输?

import nu.xom.Builder;
import nu.xom.Element;
import nu.xom.Elements;

// My builder.
Builder builder = new Builder();

class Thing {
    public Thing(Element from) {
        // Construct from an Element.
    }
}

private Stream<Thing> allThings(Path path) throws FileNotFoundException, ParsingException, IOException {
    Elements things = builder.build(new FileInputStream(path.toFile()))
            .getRootElement().getChildElements();
    // Return a stream of `Thing`s created from all of the children.
    // How??
}

我的尝试使用了老式的Iterable并流式传输了看起来不必要的困惑。

最佳答案

也许是这样的:

return IntStream.range(0, things.size())
          .mapToObj(things::get)
          .map(Thing::new);

关于java - 将多个索引项转换为流的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063652/

相关文章:

Java 8 可选用法

java - 您可以从子类化该接口(interface)的接口(interface)调用父接口(interface)的默认方法吗?

java - java8中累积对的函数式方法

java - 使用平面图进行流分组

java - 当按下某个组合键时,JFrame 可以重新出现吗?

java - 通过 Clojure 和 JDBC 将 5,000,000 行移动到另一个 Postgresql 数据库

java - 为什么我的菜单栏不会随显示窗口一起弹出?

java - android xml属性android :onClick ="..." work behind the scenes?怎么办

Java 8 相当于 (RxJava) Observable#onComplete()

Java Streams 术语 - 中间 - 非终端之间的区别