2017-02-16 9 views
9

Tek bir nesneyle Stream'i nasıl oluşturabilirim? Akış API'sinde sorunlu görülen bu gibi temel işlemler. göstermek için, ben anlamlı Create Stream <T> tek bir nesneden

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

veya başka bir deyişle

, ben LINQs return Enumerable.Repeat(parent,1); gibi bir şey istiyorum şu yöntemi tamamlamak istiyoruz. Tek bir öğeyle birlikte bir listede parent depolanmasına rağmen, diğer mantığı da karmaşıklaştırarak yerleşik yöntemleri kullanmayı tercih ediyorum. Bir sonraki aşamaya boru aynı yöntem çağrıları ile arama API tutarlılık, bu yüzden yukarı arama yapabilir ve hiyerarşi aşağı (ve her ikisi kombine) - Ben Bunun için gerekenler gelince

.

+8

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

+0

evet, tam olarak aradığım şey – wondra

cevap

14

Bunun için bir yöntem vardır: Sadece argüman olarak bir var argümansız bir Akış yapıcı olduğundan aslında, burada tek unsur Akışı ihtiyaç ait merak ediyorum

Stream.of(YourObject) 

, sadece dönebilir tek bir öğenin akışı veya tek bir dönüş ifadesi ile birden çok olanlar.

+0

Khelwood'un cevabını okumak ne kadar sürdü? –

+0

@ GrzegorzGórkiewicz yazarken gerçekten yazarken. – Eugene

+0

Basit - Google aramamın neden bunu bulamadığını açıklayamıyorum (farklı anahtar kelimeler kullanmak mantıklı olabilir mi?). Cevap için teşekkürler, 10 dakika içinde kabul ediyorum. – wondra