2017-02-16 15 views
9

どのようにして単一オブジェクトからストリームを作成できますか?このような基本操作は、ストリームAPIで問題があることが示されています。説明するために、私はこの方法有意義ストリームを作成する<T>単一オブジェクトから

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の一貫性なので、私は検索でき階層ダウン(との両方を兼ね備え) - 私はそれを必要とするものについては


+8

['Stream.of(parent)'](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#of-T-)... ? – khelwood

+0

はい、まさに私が探していたものです – wondra

答えて

14

あり、そのための方法:

Stream.of(YourObject) 

私はあなたのことを疑問に思って、実際にここでは、単一の要素ストリームを必要とし、引数としてVaRの引数を取るストリームのコンストラクタがあるので、あなただけ返すことができます1つの要素のストリーム、または複数の要素のストリームを1つのreturn文で処理します。

+0

khelwoodの答えを読むのにどれくらい時間がかかりましたか? –

+0

@GrzegorzGórkiewiczは実際にタイピングしながらそれを見た。 – Eugene

+0

シンプル - なぜ私のGoogle検索でこれを見つけられなかったのか説明できません(異なるキーワードを使用するのは理にかなっています)。返事をありがとう、10分で受け入れる。 – wondra

関連する問題