2015-10-04 12 views
6

में तत्व डालें T को Stream<T> में कोई तत्व डालने का कोई तरीका है?धारा

ArrayList<Foo> foos = new ArrayList<>(); 
    Foo foo = new Foo(); 

    Stream<Foo> stream = Stream.concat(foos.stream(), Stream.of(foo)); 

क्या कोई और तरीका है? मूल रूप से foo.stream().add(foo) का एक प्रकार ... - निश्चित रूप से जोड़ें() मौजूद नहीं है। -

+3

क्या 'concat' विधि के बारे में आपको परेशान कर रहा है? – RealSkeptic

+0

@RealSkeptic अच्छी तरह से, यह थोड़ा सा लंबा है। एक "वर्कअराउंड" और प्रदर्शन के बारे में लगता है, लेकिन, मुझे ईमानदार होने के लिए और अधिक खोजना होगा। –

उत्तर

7

नहीं, मानक जावा स्ट्रीम एपीआई में दिए गए स्ट्रीम में तत्व जोड़ने का कोई और तरीका नहीं है।

Stream<Foo> stream = StreamEx.of(foos).append(foo); 

आंतरिक यह एक ही concat विधि का उपयोग करता: मेरे StreamEx पुस्तकालय सहित कुछ तीसरे पक्ष के पुस्तकालयों यह करने के लिए additional सुविधाजनक तरीकों प्रदान करते हैं।

इसी विधि jOOL पुस्तकालय में उपलब्ध है:

Stream<Foo> stream = Seq.seq(foos).concat(foo); 
1

यह मानते हुए कि foos मौजूद नहीं हैं। आप Stream.Builder के बजाय एक ArrayList इस तरह के साथ एक Stream निर्माण कर सकते हैं:

Stream.Builder<Integer> builder = Stream.builder(); 
for (int i = 0; i < 10; i++) { 
    builder.accept(i); 
} 
Stream<Integer> build = builder.add(50).build(); 
// ... 
+0

जानना अच्छा है, यह बहुत उपयोगी हो सकता है। –