鉴于一系列具有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
并流式传输,这似乎是不必要的混乱。
答案 0 :(得分:5)
可能是这样的:
return IntStream.range(0, things.size())
.mapToObj(things::get)
.map(Thing::new);
答案 1 :(得分:1)
查看<a name="raptors"></a>
课程,它似乎只有(正如您所说)Elements
和get(int index)
所以我认为您最简单的选择是使用跟随size()
IntStream
:
mapToObj