जावा में Iterator और Enumeration Interface में अंतर

लेखक: Laura McKinney
निर्माण की तारीख: 2 अप्रैल 2021
डेट अपडेट करें: 5 मई 2024
Anonim
जावा में इटरेटर और एन्यूमरेशन के बीच अंतर | एन्यूमरेशन बनाम इटरेटर
वीडियो: जावा में इटरेटर और एन्यूमरेशन के बीच अंतर | एन्यूमरेशन बनाम इटरेटर

विषय


तीन कर्सर जो तत्वों को किसी भी संग्रह से एक-एक करके एक्सेस करने के लिए उपयोग किए जाते हैं गणना, Iterator और ListIterator। हालाँकि, Iterator और Enumerator समान कार्य करने के लिए हैं। फिर भी, वे एक-दूसरे से इस मायने में अलग हैं कि संग्रह में तत्वों की केवल पढ़ने की पहुंच है। दूसरी तरफ, Iterator संग्रह से तत्वों को हटाने के साथ-साथ पढ़ सकता है। Iterator और Enumeration के बीच महत्वपूर्ण अंतर यह है कि गणना इसे संग्रह कक्षाओं पर लागू नहीं किया जा सकता है जो केवल विरासत कक्षाओं पर लागू होता है। दूसरी ओर, ए इटरेटर इसलिए संग्रह कक्षाओं पर लागू होता है, इसे एक सार्वभौमिक कर्सर के रूप में जाना जाता है। आइए नीचे दिए गए तुलना चार्ट की सहायता से Iterator और Enumeration के बीच कुछ और अंतर जानें।

  1. तुलना चार्ट
  2. परिभाषा
  3. मुख्य अंतर
  4. निष्कर्ष

तुलना चार्ट

तुलना के लिए आधारइटरेटर गणना
बुनियादीइटरेटर एक सार्वभौमिक कर्सर है क्योंकि यह सभी संग्रह वर्गों के लिए लागू है।गणना एक सार्वभौमिक कर्सर नहीं है क्योंकि यह केवल विरासत वर्गों पर लागू होता है।
पहुंचIterator का उपयोग करके आप संग्रह में तत्वों को पढ़ और निकाल सकते हैं।गणना का उपयोग करके आप केवल संग्रह में तत्वों को पढ़ सकते हैं।
तरीकेसार्वजनिक बूलियन हैनेक्स्ट ();
सार्वजनिक वस्तुओं के आगे ();
सार्वजनिक शून्य हटाने ();
सार्वजनिक बूलियन hasMoreElements ();
सार्वजनिक वस्तु nextElement ();
सीमाIterator एक यूनिडायरेक्शनल फॉरवर्ड एक्सेस कर्सर है।
Iterator संग्रह में किसी भी तत्व को प्रतिस्थापित नहीं कर सकता है।
Iterator संग्रह में कोई नया तत्व नहीं जोड़ सकता है।
गणन यूनिडायरेक्शनल फॉरवर्ड एक्सेस कर्सर है।
गणन केवल विरासत वर्गों का समर्थन करता है।
गणना में केवल संग्रह में तत्वों तक केवल पढ़ने के लिए उपयोग होता है।
काबूIterator की सीमाओं को पार करने के लिए आपको ListIterator का विकल्प चुनना होगा।गणना की सीमाओं को पार करने के लिए आपको Iterator का विकल्प चुनना चाहिए।


Iterator इंटरफ़ेस की परिभाषा

इटरेटर संग्रह ढांचे में एक इंटरफ़ेस है। जैसा कि Iterator सभी संग्रह वर्गों पर लागू होता है, इसे एक सार्वभौमिक कर्सर के रूप में संदर्भित किया जाता है। यह संग्रह में तत्वों को एक-एक करके एक्सेस करने के लिए उपयोग किया जाने वाला कर्सर है। Iterator का उपयोग करके, आप संग्रह से तत्वों को पुनः प्राप्त कर सकते हैं और यदि आप चाहें तो आप संग्रह से तत्वों को निकाल भी सकते हैं। Iterator का ऑब्जेक्ट नीचे दिए गए अनुसार बनाया जा सकता है।

Iterator itr = Collc.iterator ();

चर आईटीआर Iterator की एक वस्तु है। Collc किसी भी संग्रह वस्तु है जिसे Iterator की वस्तु (itr) का उपयोग करके साइकिल चलाना या पुनरावृत्त करना है। इटरेटर () इटरेटर ऑब्जेक्ट बनाने के लिए उपयोग की जाने वाली विधि है। Iterator में तीन विधियां हैं जैसा कि नीचे दिखाया गया है।

सार्वजनिक बूलियन हैनेक्स्ट (); सार्वजनिक वस्तु अगला (); सार्वजनिक शून्य हटाने ();

पहली विधि hasnext () जाँच करता है कि संग्रह में कोई तत्व है या नहीं। यदि संग्रह में तत्व हैं, तो यह सही लौटेगा और दूसरा गलत लौटेगा। दूसरी विधि आगामी() संग्रह में अगले तत्व को पुनः प्राप्त करने के लिए उपयोग किया जाता है। तीसरी विधि हटाना() का उपयोग संग्रह से तत्वों को हटाने के लिए किया जाता है।


Iterator केवल संग्रह में आगे की दिशा में यात्रा कर सकता है, जबकि यह यात्रा करते समय वापस नहीं जा सकता है। Iterator तत्व को संग्रह से निकाल सकता है लेकिन किसी भी मौजूदा तत्व को नए तत्व से बदलने की क्षमता नहीं रखता है और न ही यह संग्रह में किसी नए तत्व को जोड़ सकता है। इन सीमाओं को पार करने के लिए आप लिस्टइंटरेटर इंटरफ़ेस के लिए जा सकते हैं।

गणना इंटरफ़ेस की परिभाषा

गणना पर लागू इंटरफ़ेस है विरासत कक्षाएं, और इसे किसी भी संग्रह वर्ग पर लागू नहीं किया जा सकता है। इसलिए, यह एक सार्वभौमिक कर्सर नहीं है। गणन एक-एक करके संग्रह से तत्व (वस्तु) को पुनः प्राप्त करता है। गणना ऑब्जेक्ट में संग्रह के तत्वों तक केवल पढ़ने के लिए पहुंच है। संचय वस्तु संग्रह से किसी भी तत्व को नहीं बदल सकती है। आइए देखते हैं कि एन्यूमरेशन ऑब्जेक्ट कैसे बनाया जाता है, एक नज़र डालें।

एनुमरेशन एर = Vect.elements ();

चर एर गणना की एक वस्तु है। Vect सदिश वर्ग की वस्तु है जिसे एन्यूमरेशन के ऑब्जेक्ट (एर) द्वारा ट्रेस किया जाना है। प्रक्रिया तत्व () एन्यूमरेशन का ऑब्जेक्ट बनाने के लिए उपयोग किया जाता है। Enumeration इंटरफ़ेस में केवल दो विधियाँ हैं जैसा कि नीचे दिखाया गया है।

सार्वजनिक बूलियन hasMoreElements (); सार्वजनिक अगला भुगतान ();

पहली विधि hasMoreElements () का उपयोग संग्रह की स्थिति की जांच करने के लिए किया जाता है कि क्या इसमें तत्व हैं या यह खाली है। यदि संग्रह में तत्व हैं hasMoreElements () मेथड लौटाते हैं तो सही और गलत वापस आता है। दूसरी विधि nextElement () एक-एक करके संग्रह से तत्वों को पुनः प्राप्त करने के लिए उपयोग किया जाता है। जब ट्रैवर्सिंग पूरा हो गया है तो अगली ईवेंट () विधि फेंकता है NoSuchElementException। एन्यूमरेशन ऑब्जेक्ट केवल आगे की दिशा में यात्रा करता है। यह संग्रह में किसी भी तत्व को जोड़ या हटा या बदल नहीं सकता है। गणना की इन सीमाओं को दूर करने के लिए, आपको Iterator का विकल्प चुनना चाहिए।

  1. Iterator और Enumeration के बीच मुख्य अंतर यह है कि Iterator एक सार्वभौमिक कर्सर है, जिसका उपयोग किसी भी संग्रह वस्तु को पुनरावृत्त करने के लिए किया जा सकता है। दूसरी ओर, एन्यूमरेशन का उपयोग केवल विरासत वर्ग की वस्तु को ट्रेस करने के लिए किया जाता है।
  2. गणना ऑब्जेक्ट में संग्रह में तत्वों तक केवल पढ़ने के लिए उपयोग होता है। हालांकि, Iterator की वस्तु संग्रह से तत्वों को पढ़ और हटा सकती है।
  3. संग्रह की स्थिति की जांच करने के लिए पुनरावृति के दो तरीके हैं और एक को संग्रह से तत्वों को पुनः प्राप्त करना है। एन्यूमरेशन विधियों के अलावा Iterator में संग्रह से तत्वों को निकालने के लिए एक और विधि है।
  4. गणना की सीमाएं हैं यह आगे यूनिडायरेक्शनल कर्सर है, इसमें केवल-पढ़ने की सुविधा है, और इसे संग्रह कक्षाओं में लागू किया जा सकता है। दूसरे तरीके में, Iterator संग्रह में किसी नए तत्व को प्रतिस्थापित या जोड़ नहीं सकता है और Enumeration की तरह इसका भी यूनिडायरेक्शनल कर्सर फॉरवर्ड करता है।
  5. गणना की सीमा Iterator द्वारा हल की जाती है और Iterator की सीमाओं को ListIterator द्वारा हल किया जाता है।

निष्कर्ष:

आजकल, Iterator और ListItertaor कर्सर का उपयोग किया जाता है क्योंकि वे सार्वभौमिक कर्सर हैं और Enumeration की तुलना में बहुत कुशल हैं।