2017-02-16 15 views
9

Jak utworzyć strumień z pojedynczego obiektu? Taka podstawowa operacja okazała się problematyczna w strumieniu API. Aby zilustrować, chciałbym zakończyć następujące metody sensownieUtwórz strumień <T> z pojedynczego obiektu

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())); 
} 

lub innymi słowy, chciałbym coś takiego LINQs return Enumerable.Repeat(parent,1);. Chociaż przechowywanie parent na liście z pojedynczym elementem działałoby, to również komplikowałoby inną logikę, więc wolałbym używać wbudowanych metod.


chodzi o to, czego potrzebuję go - konsystencji Search API, więc mogę szukać w górę iw dół hierarchii (i połączyć oba) z tych samych wywołań metod, rurociągi go do następnego etapu.

+8

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

+0

tak, dokładnie to, czego szukałem – wondra

Odpowiedz

14

Istnieje sposób, że:

Stream.of(YourObject) 

jestem po prostu zastanawiasz rzeczywiście trzeba pojedynczego elementu Stream tutaj, ponieważ nie jest konstruktorem Stream, który zajmuje Arg var jako argument, można po prostu zwracają strumień pojedynczego elementu lub wielu z nich za pomocą pojedynczej instrukcji return.

+0

Jak długo zajęło ci czytanie odpowiedzi Khelwooda? –

+0

@ GrzegorzGórkiewicz widział, że podczas pisania naprawdę. – Eugene

+0

Proste - nie mogę wyjaśnić, dlaczego moje wyszukiwanie google nie znalazło tego (może ma sens używanie różnych słów kluczowych?). Dziękuję za odpowiedź, akceptuję za 10 minut. – wondra

Powiązane problemy