将大量索引项转换为流的最简单方法

时间:2015-12-03 10:36:00

标签: 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并流式传输,这似乎是不必要的混乱。

2 个答案:

答案 0 :(得分:5)

可能是这样的:

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

答案 1 :(得分:1)

查看<a name="raptors"></a> 课程,它似乎只有(正如您所说)Elementsget(int index)所以我认为您最简单的选择是使用跟随size() IntStream

mapToObj