【问题标题】:Create Stream<T> from single object从单个对象创建 Stream<T>
【发布时间】:2017-02-16 13:31:42
【问题描述】:

如何从单个对象创建 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()));
}

或者换句话说,我想要像 LINQs return Enumerable.Repeat(parent,1); 这样的东西。尽管将parent 存储在一个包含单个项目的列表中是可行的,但它也会使其他逻辑复杂化,所以我更喜欢使用内置方法。


至于我需要它的用途 - 搜索 API 的一致性,因此我可以使用相同的方法调用搜索上下层次结构(并将两者结合起来),并将其传递到下一阶段。

【问题讨论】:

    标签: java java-stream


    【解决方案1】:

    有一个方法:

     Stream.of(YourObject)
    

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

    【讨论】:

    • 简单 - 我无法解释为什么我的谷歌搜索没有找到这个(使用不同的关键字可能有意义?)。感谢回复,10分钟后接受。
    • 有一个重载的工厂方法用于创建单参数流:public static&lt;T&gt; Stream&lt;T&gt; of(T t) (返回包含单个元素的顺序Stream。)
    • 如果YourObject 是一个数组,这将不起作用。
    猜你喜欢
    • 2019-09-15
    • 2013-07-18
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多