从单个对象创建流<T>

2022-09-01 15:54:34

如何从单个对象创建流?这种基本操作在流 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的一致性,所以我可以用相同的方法调用上下搜索层次结构(并将两者结合起来),将其管道连接到下一阶段。


答案 1

有一种方法:

 Stream.of(YourObject)

我只是想知道你在这里实际上需要单元素Stream,因为有一个 Stream 构造函数将 var arg 作为参数,你可以通过单个 return 语句返回单个元素或多个元素的流。


答案 2

推荐