如何从单个对象创建Stream?这种基本操作在流API中显示出问题。为了说明,我想有意义地完成以下方法
private Node parent;
private List<Node> children;
public Stream<Node> getFilteredNodes(Options o) {
if(o.findParent()/*special case*/) return /*??? stream containing just parent*/;
return children.stream().filter(x -> x.getName().equals(o.getQuery()));
}
或换句话说,我想要LINQ return Enumerable.Repeat(parent,1);
之类的东西。即使将parent
存储在包含单个项目的列表中也会有效,但它也会使其他逻辑复杂化,因此我更倾向于使用内置方法。
至于我需要它 - 搜索API的一致性,所以我可以在相同的方法调用中上下搜索层次结构(并将两者结合起来),并将其引导到下一阶段。
答案 0 :(得分:24)
有一种方法:
Stream.of(YourObject)
我只是想知道你实际上在这里需要单个元素Stream,因为有一个Stream构造函数将var arg作为参数,你可以通过单个return语句返回单个元素或多个元素的流。