डेटा संरचनाओं के साथ काम करते समय, डेटा को विभिन्न तरीकों से हेरफेर और संसाधित करने की आवश्यकता अक्सर उत्पन्न होती है। एक सामान्य परिदृश्य एक Iterator, तत्वों के अनुक्रमिक संग्रह, को एक स्ट्रीम में, एक अधिक बहुमुखी और शक्तिशाली डेटा प्रोसेसिंग पाइपलाइन में परिवर्तित करना है।
इस रूपांतरण को प्रभावी ढंग से प्राप्त करने के लिए, डेटा की प्रतियां बनाने से बचना आवश्यक है . यह अकुशल और अनावश्यक दोनों है, खासकर जब बड़े डेटासेट के साथ काम कर रहे हों।
एक तरीका स्ट्रीमसपोर्ट क्लास का उपयोग करना है। यह Iterable या Spliterator से स्ट्रीम बनाने के तरीके प्रदान करता है। इस मामले में, हम Spliterator.spliteratorUnknownSize() का उपयोग करके Iterator से एक स्प्लिटरेटर बना सकते हैं। यहाँ एक उदाहरण है:
Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream targetStream = StreamSupport.stream(
Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
false);
एक अन्य विकल्प में Iterator से Iterable बनाना शामिल है। Iterable एक कार्यात्मक इंटरफ़ेस है, और लैम्ब्डा के साथ, हम आसानी से Iterator से एक Iterable बना सकते हैं:
Iterable iterable = () -> sourceIterator;
Stream targetStream = StreamSupport.stream(iterable.spliterator(), false);
यह दृष्टिकोण यकीनन अधिक पठनीय है, क्योंकि यह कार्यात्मक इंटरफ़ेस डिज़ाइन का उपयोग करता है। अनावश्यक नकल से बचकर, आप प्रदर्शन और कोड स्पष्टता बनाए रखते हुए अपने डेटा को कुशलतापूर्वक संसाधित कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3