Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में Iterator और Enumeration के बीच अंतर

Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया।

Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि इसके पास कलेक्शन में एलिमेंट्स का रीड-ओनली एक्सेस होता है। इसके निम्नलिखित मेथड्स हैं:

  • hasMoreElements()
  • nextElement()

दूसरी ओर, एक Iterator कलेक्शन में एलिमेंट को पढ़ और हटा सकता है। इसके निम्नलिखित मेथड्स हैं:

  • hasNext()
  • next()
  • remove()
क्र.सं. मुख्य बिंदु Iterator Enumeration
1 बुनियादी Iterator में, हम ट्रैवर्स करते समय एलिमेंट को पढ़ और हटा सकते हैं Enumeration का उपयोग करके, हम ट्रैवर्स करते समय केवल एलिमेंट पढ़ सकते हैं
2 एक्सेस इसे कलेक्शन फ्रेमवर्क की किसी भी क्लास के साथ उपयोग किया जा सकता है इसे केवल कलेक्शन फ्रेमवर्क की लिगेसी क्लासेज जैसे Vector और Hashtable के साथ उपयोग किया जा सकता है
3 फेल-फास्ट और फेल-सेफ कलेक्शन में कोई भी परिवर्तन, जैसे थ्रेड के इटरेट करते समय एलिमेंट हटाने पर, यह ConcurrentModificationException थ्रो करता है Enumeration फेल-सेफ प्रकृति का है। यह ConcurrentModificationException नहीं थ्रो करता
4 सीमा केवल फॉरवर्ड डायरेक्शन में इटरेट करना संभव है Enumeration का उपयोग करके रिमूव ऑपरेशन नहीं किए जा सकते
5 मेथड्स इसमें निम्नलिखित मेथड्स हैं:
• hasNext()
• next()
• remove()
इसमें निम्नलिखित मेथड्स हैं:
• hasMoreElements()
• nextElement()

Enumeration का उदाहरण

class EnumerationExample {
    public static void main(String args[]) {
        List<String> list = new ArrayList<>(Arrays.asList("Apple", "Cat", "Dog", "Rat"));
        Vector<String> v = new Vector<>(list);
        delete(v, "Dog");
    }
    
    private static void delete(Vector<String> v, String name) {
        Enumeration<String> e = v.elements();
        while (e.hasMoreElements()) {
            String s = e.nextElement();
            if (s.equals(name)) {
                v.remove(name); // ध्यान: Enumeration के दौरान रिमूव करना अनसेफ है
            }
        }
        
        // नाम प्रदर्शित करें
        System.out.println("The names are:");
        e = v.elements();
        while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
        }
    }
}

Iterator का उदाहरण

class IteratorExample {
    public static void main(String args[]) {
        List<String> list = new ArrayList<>(Arrays.asList("Apple", "Cat", "Dog", "Rat"));
        Vector<String> v = new Vector<>(list);
        delete(v, "Dog");
    }
    
    private static void delete(Vector<String> v, String name) {
        Iterator<String> i = v.iterator();
        while (i.hasNext()) {
            String s = i.next();
            if (s.equals(name)) {
                i.remove(); // सुरक्षित रिमूवल
            }
        }
        
        // नाम प्रदर्शित करें
        System.out.println("The names are:");
        i = v.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }
}

महत्वपूर्ण नोट्स

  • फेल-फास्ट: Iterator मूल कलेक्शन के साथ छेड़छाड़ का पता लगाता है और ConcurrentModificationException थ्रो करता है
  • फेल-सेफ: Enumeration (और ConcurrentHashMap का इटरेटर) कलेक्शन की कॉपी पर काम करता है, इसलिए एक्सेप्शन नहीं थ्रो करता
  • Java 8+: forEachRemaining(), stream() जैसे नए मेथड्स Iterator में उपलब्ध हैं
  • ListIterator: Iterator का एक्सटेंशन जो बाईडायरेक्शनल ट्रैवर्सल और एलिमेंट मॉडिफिकेशन की अनुमति देता है
  1. - जावा में Serialization और Externalization के बीच अंतर

    Serialization और Externalization दोनों ऑब्जेक्ट को बाइट स्ट्रीम में बदलने और बाइट स्ट्रीम को डेटाबेस या मेमोरी में स्टोर करने की प्रक्रियाएं हैं। जो क्लास java.io.Serializable इंटरफेस को इम्प्लीमेंट करती है उसे सीरियलाइज किया जा सकता है। दूसरी ओर, Externalization एप्लिकेशन में आवश्यकता के आधार पर कस

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या

  1. - Java में Iterator और ListIterator के बीच अंतर

    Java ने कलेक्शन में संग्रहीत डेटा को एक-एक करके पार करने के लिए ये दो इंटरफेस प्रदान किए हैं। इटरेटर और लिस्ट इटरेटर का आंतरिक कार्यान्वयन उन्हें अलग करता है लेकिन दोनों इटरेटर्स का मुख्य एजेंडा समान है।Iterator और ListIterator के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुIteratorListIter