मैं एक अंतर सरणी को सूची में बदलने की कोशिश कर रहा था और मैंने जावा 8 स्ट्रीम का उपयोग करने का अपरिचित मार्ग लिया और इसके साथ आया
Arrays.stream(arr).boxed().collect(Collectors.toList());
मुझे अभी भी इस लाइन को समझने में कठिनाई है, ज्यादातर,
Collectors.toList()इस मामले मेंArrayList<Integer>कार्यान्वयनListइंटरफ़ेस क्यों है ? क्योंLinkedList<Integer>या कोई अन्य सामान्य वर्गListइंटरफ़ेस के अनुरूप नहीं है? मुझे इसके बारे में कुछ भी नहीं मिल सकता है, सिवाय इसके कि यहां ArrayList का संक्षिप्त उल्लेख एपीआई नोट्स अनुभाग में है।बायें पैनल का क्या मतलब है? जाहिर है जेनेरिक रिटर्न टाइप ( यहां मेरे कोड में)। और मुझे लगता है कि विधि का सामान्य प्रकार तर्क है, लेकिन वे कैसे निर्दिष्ट हैं? मैंने कलेक्टर इंटरफ़ेस डॉक में देखा और इसे अवशोषित करने में सक्षम नहीं था।
Stream.collect()RArrayList<Integer><R, A>
Collectors.toList()इस मामले रिटर्न में एक ArrayList<Integer>" यह एक वापस नहीं हो सकता है ArrayList। Listकार्यान्वयन है अपरिभाषित है, तो आप क्या कार्यान्वयन यह रिटर्न पर भरोसा नहीं कर सकते हैं। जैसा कि जादव कहते हैं: "सूची के प्रकार , परिवर्तनशीलता, क्रमबद्धता, या सूची की थ्रेड-सुरक्षा की कोई गारंटी नहीं है ;"
toList()एक ArrayListया नहीं लौटा रहा है List- यह एक लौट रहा है Collector, जो अंततः बनाएगा और वापस लौटेगा List- यह भी दस्तावेज में कहा गया है: "... प्रकार की कोई गारंटी नहीं है , परिवर्तनशीलता, क्रमबद्धता, या सूची की थ्रेड-सुरक्षा लौटी; यदि लौटी हुई सूची पर अधिक नियंत्रण आवश्यक है, तो कॉलेक्शन (सप्लायर) का उपयोग करें .... "
Rपरिणामी प्रकार का सामान्य प्रकार है।Aकलेक्टर के मध्यवर्ती संचय प्रकार के सामान्य प्रकार। यह लागू करने का विवरण है कि एक कलेक्टर कैसे काम करता है। यह विभाजित करता है और जीतता है, समानांतर प्रसंस्करण के लिए भी, पहले मध्यवर्ती प्रकारों में एकत्र करता है।