अमरूद जैसे प्री-जावा 8 लैम्ब्डा-हेवी लाइब्रेरी में, आउटपुट सामान्य जावा कलेक्शन फ्रेमवर्क इंटरफेस का उपयोग करते हैं, इसलिए उन्हें बाहरी / आंतरिक एपीआई के आसपास पास करना आसान होता है और फिर भी लाइब्रेरी विधि (जैसे आलसी filter()
और transform()
) होने पर कुछ आलसी कम्प्यूटेशन का उपयोग करते हैं ।
हालाँकि, जावा 8 स्ट्रीम में, कॉल करने के लिए Collection
/ a Map
टर्मिनल (यानी उत्सुक) है और यह परिणामों को धारण करने के लिए नए डेटा संरचनाओं को भी आवंटित करेगा।
बीच में कई चरणों और रणनीति पैटर्न के साथ जटिल संगणना के लिए, यह मध्यवर्ती परिणामों के कारण बहुत सारे अनावश्यक आवंटन का कारण बनता है।
तो, क्या लोगों को लगता है कि आंतरिक एपीआई (यानी स्ट्रेटेजी पैटर्न स्ट्रेटेजी) के लिए एक अच्छा अभ्यास है और Stream
एस वापस लेने के लिए या क्या मुझे सिर्फ आलसी के लिए कमबैक करना चाहिए, लेकिन सुव्यवस्थित नहीं (दंड का इरादा मुझे लगता है) अमरूद एपीआई?
संपादित करें:
इसके साथ मेरी मुख्य चिंता Stream
यह है कि इसे केवल एक बार ही सेवन किया जा सकता है और यह Supplier<Stream<X>>
बेहद खौफनाक लगता है। यह लगभग आपको केवल एक Collection
और फिर से पास करने के लिए धक्का देता stream()
है (और उस बिंदु पर उत्सुक मूल्यांकन की लागत का भुगतान)।