गणना और इटरेटर के बीच अंतर

गणना और इटरेटर के बीच अंतर
गणना और इटरेटर के बीच अंतर

वीडियो: गणना और इटरेटर के बीच अंतर

वीडियो: गणना और इटरेटर के बीच अंतर
वीडियो: डेटा मॉडलिंग अवलोकन 2024, जुलाई
Anonim

गणना बनाम इटरेटर

कई डेटा संरचनाएं हैं जो जावा में संग्रह के रूप में कार्य करती हैं जैसे वेक्टर, हैश टेबल और कक्षाएं जो जावा संग्रह फ्रेमवर्क को लागू करती हैं (यानी हैश मैप, हैशसेट, ऐरेलिस्ट, ट्रीसेट, ट्रीमैप, लिंक्डलिस्ट, लिंक्डहैश मैप और लिंक्ड हैशसेट)। जावा में वस्तुओं के अलग-अलग तत्वों के माध्यम से पुनरावृति करने के कई तरीके हैं। जावा इस कार्य को आसान बनाने के लिए दो इंटरफेस प्रदान करता है। एन्यूमरेशन और इटरेटर java.util पैकेज में पाए जाने वाले दो इंटरफेस हैं जो वस्तुओं के एक सेट के साथ अनुक्रमों या वस्तुओं के माध्यम से गणना करने की कार्यक्षमता प्रदान करते हैं। जेडीके 1 में एन्यूमरेटर पेश किया गया था।0 और Iterator जो JDK 1.2 में पेश किया गया था, वस्तुतः एन्यूमरेटर (संग्रह फ्रेमवर्क के भीतर) की कार्यक्षमता को दोहराता है।

गणना क्या है?

गणना जावा में एक सार्वजनिक इंटरफ़ेस है, जिसे JDK 1.0 में पेश किया गया है, जो तत्वों के अनुक्रम के माध्यम से गणना करने की क्षमता प्रदान करता है। यह java.util पैकेज के अंतर्गत पाया जाता है। जब किसी ऑब्जेक्ट द्वारा एन्यूमरेशन इंटरफ़ेस लागू किया जाता है, तो वह ऑब्जेक्ट तत्वों का एक क्रम उत्पन्न कर सकता है। एन्यूमरेशन इंटरफ़ेस में दो विधियाँ हैं। विधि hasMoreElements () परीक्षण करेगी कि क्या इस गणना में अधिक तत्व हैं और अगला एलिमेंट () अनुक्रम में अगला तत्व देता है (यदि जाने के लिए कम से कम एक और है)। दूसरे शब्दों में, नेक्स्ट एलीमेंट () को क्रमिक रूप से कॉल करके, प्रोग्रामर श्रृंखला में अलग-अलग तत्वों तक पहुंच सकता है। उदाहरण के लिए, एन्यूमरेटर का उपयोग करके वेक्टर v1 में सभी तत्वों को प्रिंट करने के लिए, निम्नलिखित कोड स्निपेट का उपयोग किया जा सकता है।

गणना ई=v1.elements ();

जबकि(e.hasMoreLements()){

System.out.println(e.nextElement ());

}

Enumerator का उपयोग SequenceInputStream ऑब्जेक्ट में इनपुट स्ट्रीम को परिभाषित करने के लिए भी किया जा सकता है।

इटरेटर क्या है?

Iterator Java.util पैकेज में एक सार्वजनिक इंटरफ़ेस है, जो संग्रह वस्तुओं के तत्वों के माध्यम से पुनरावृत्ति की अनुमति देता है जो संग्रह ढांचे (जैसे ArrayList, LinkedList, आदि) को लागू करते हैं। इसे JDK 1.2 में पेश किया गया था और जावा कलेक्शंस फ्रेमवर्क के भीतर एन्यूमरेटर को बदल दिया गया था। इटरेटर के तीन तरीके हैं। विधि हैनेक्स्ट () परीक्षण करती है कि क्या संग्रह में शेष तत्व हैं और अगली () विधि श्रृंखला में अगला तत्व लौटाती है। अंतर्निहित संग्रह से वर्तमान तत्व को हटाने के लिए निकालें () विधि का उपयोग किया जा सकता है। उदाहरण के लिए, Iterator का उपयोग करके वेक्टर v1 में सभी तत्वों को प्रिंट करने के लिए, निम्न कोड स्निपेट का उपयोग किया जा सकता है।

इटरेटर i=v1.elements ();

जबकि(i.hasNext ()){

System.out.println(e.next());

}

एन्यूमरेशन और इटरेटर में क्या अंतर है?

यद्यपि, एन्यूमरेशन और इटरेटर java.util पैकेज में पाए जाने वाले दो इंटरफेस हैं, जो एक श्रृंखला के तत्वों के माध्यम से पुनरावृत्ति/गणना की अनुमति देते हैं, उनके अंतर हैं। दरअसल, इटरेटर, जिसे एन्यूमरेशन के बाद पेश किया गया था, जावा कलेक्शंस फ्रेमवर्क के भीतर एन्यूमरेशन को बदल देता है। गणना के विपरीत, Iterator विफल-सुरक्षित है। इसका मतलब है कि समवर्ती संशोधनों (अंतर्निहित संग्रह में) की अनुमति नहीं है जब इटरेटर का उपयोग किया जाता है। यह बहु-थ्रेडेड वातावरण में बहुत उपयोगी है जहां हमेशा समवर्ती संशोधनों का जोखिम होता है। समवर्ती संशोधन की स्थिति में, Iterator ऑब्जेक्ट एक ConcurrentModificationException को फेंक देगा। इटरेटर के पास एन्यूमरेटर की तुलना में छोटे विधि नाम हैं। इसके अलावा, इटरेटर में पुनरावृत्ति के दौरान तत्वों को हटाने की अतिरिक्त कार्यक्षमता होती है (जो कि एन्यूमरेटर का उपयोग करना संभव नहीं है)।इसलिए, यदि संग्रह से तत्वों को हटाने की आवश्यकता है, तो Iterator ही एकमात्र विकल्प है जिस पर विचार किया जा सकता है।

सिफारिश की: