2012-06-11 12 views
109
Iterator ite = Set.iterator(); 
Iterator ite = List.iterator(); 

ListIterator listite = List.listIterator(); 

हम Iterator का प्रयोग कर एक Set या एक List या एक Map पार करने के लिए कर सकते हैं। लेकिन ListIterator का उपयोग केवल List को पार करने के लिए किया जा सकता है, यह Set पर जा सकता है। क्यूं कर?इटरेटर और लिस्टाइटरेटर के बीच अंतर?

मुझे पता है कि मुख्य अंतर यह है कि इटरेटर के साथ हम केवल एक ही दिशा में यात्रा कर सकते हैं लेकिन ListIterator के साथ हम दोनों दिशाओं की यात्रा कर सकते हैं। क्या कोई और अंतर है? और Iterator से अधिक के किसी भी फायदे?

+0

पीटर्स उत्तर के अलावा मैं आपको सभी अच्छे उदाहरणों के साथ जावा में सोचने में एक अध्याय पढ़ने की सलाह दूंगा – ant

+0

यह भी देखें: http: //www.java67.com/2016/09/5- डिफरेंस- बीच-इटरेटर-एंड-लिस्ट इटरेटर-इन-जावा = – roottraveller

उत्तर

124

अंतर के लिए ListIterator

जावाडोक में सूचीबद्ध हैं आप

  • पुनरावृति पीछे की ओर
  • इटरेटर किसी भी बिंदु पर प्राप्त कर सकते हैं।
  • किसी भी बिंदु पर एक नया मूल्य जोड़ें।
  • उस बिंदु पर एक नया मान सेट करें।
+61

और कारण यह है कि आप 'सेट' के साथ ऐसा क्यों नहीं कर सकते हैं: "वर्तमान बिंदु" नहीं है: तत्वों में कोई अनुक्रमणिका नहीं है और कोई उपयोगी तरीका नहीं है आप किसी तत्व को "पहले" या "बाद में" जोड़ सकते हैं। –

+0

@ पीटर लॉरी ** किसी भी बिंदु पर इंडेक्स प्राप्त करें ** - क्या यह विधियों * पिछले इंडेक्स() * और * nextIndex() * के बारे में है? – gstackoverflow

+2

@gstackoverflow जांच java.util.List # listIterator (int) – kilonet

31

दो मतभेद हैं:

  1. हम सेट और सूची पार और यह भी नक्शा वस्तुओं के प्रकार के इटरेटर उपयोग कर सकते हैं। जबकि ListIterator का उपयोग सूची-प्रकार ऑब्जेक्ट्स के लिए ट्रैवर्स करने के लिए किया जा सकता है, लेकिन ऑब्जेक्ट्स के सेट-प्रकार के लिए नहीं।

    है यही कारण है कि, हम, सेट और सूची का उपयोग करके एक इटरेटर वस्तु प्राप्त कर सकते हैं यहाँ देखें:

    इटरेटर का उपयोग कर हम आगे की दिशा ही में संग्रह वस्तु से तत्वों प्राप्त कर सकते हैं के द्वारा। इटरेटर में

    तरीके:

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator(); 
    Iterator iterator = List.iterator();
  2. लेकिन हम केवल सूची इंटरफ़ेस से ListIterator वस्तु मिलता है, यहाँ देखें:

    जहां एक सूची के रूप में आप किसी भी दिशा में आगे बढ़ने की अनुमति देता है (आगे और पीछे दोनों)। तो इसमें इटरेटर के अलावा hasPrevious() और previous() जैसे दो और तरीके हैं।इसके अलावा, हम (क्रमशः nextIndex() और previousIndex() का प्रयोग करके) अगले या पिछले तत्वों के अनुक्रमित प्राप्त कर सकते हैं ListIterator में

    तरीके:

    1. hasNext()
    2. अगले()
    3. पिछले()
    4. हैप्रेशनल()
    5. हटाएं()
    6. अगला इंडेक्स()
    7. previousIndex()
    ListIterator listiterator = List.listIterator();

    जैसे कि, हम सेट इंटरफ़ेस से ListIterator वस्तु नहीं मिल सकता है।

संदर्भ: - What is the difference between Iterator and ListIterator ?

+30

ऐसा लगता है कि यह http://kirankumarjava.blogspot.com/2013/06/what-is-difference-between-iterator-and.html से बड़े पैमाने पर कट-एंड-पेस्ट किया गया है। आपको हमेशा मूल लेखक को स्वीकार करना होगा। –

15

इटरेटर ListIterator के सुपर वर्ग है।

यहाँ उन दोनों के बीच अंतर हैं:

  1. iterator के साथ आप केवल आगे बढ़ सकते हैं, लेकिन ListIterator साथ आप भी backword स्थानांतरित कर सकते हैं तत्वों को पढ़ने के दौरान।
  2. ListIterator के साथ आप ट्रैवर्सिंग के दौरान किसी भी समय इंडेक्स प्राप्त कर सकते हैं, जो iterator एस के साथ संभव नहीं है।
  3. iterator के साथ आप केवल अगले तत्व के लिए उपलब्ध हैं या नहीं, लेकिन listiterator में आप पिछले और अगले तत्वों को देख सकते हैं।
  4. listiterator के साथ आप ट्रैवर्सिंग करते समय किसी भी समय नया तत्व जोड़ सकते हैं। iterator के साथ संभव नहीं है।
  5. listiterator के साथ आप ट्रैवर्सिंग के दौरान एक तत्व को संशोधित कर सकते हैं, जो iterator के साथ संभव नहीं है।

इटरेटर रंगरूप:

public interface Iterator<E> { 
    boolean hasNext(); 
    E next(); 
    void remove(); //optional-->use only once with next(), 
         dont use it when u use for:each 
    } 

ListIterator रंगरूप:

public interface ListIterator<E> extends Iterator<E> { 
    boolean hasNext(); 
    E next(); 
    boolean hasPrevious(); 
    E previous(); 
    int nextIndex(); 
    int previousIndex(); 
    void remove(); //optional 
    void set(E e); //optional 
    void add(E e); //optional 
} 
1

इटरेटर और ListIterator अंतर

  1. हम सेट और सूची और मानचित्र प्रकार के ऑब्जेक्ट्स को पार करने के लिए इटरेटर का उपयोग कर सकते हैं। लेकिन लिस्ट इटरेटर का उपयोग सूची प्रकार ऑब्जेक्ट्स के लिए ट्रैवर्स करने के लिए किया जा सकता है, लेकिन सेट प्रकार ऑब्जेक्ट्स के लिए नहीं।

है यही कारण है कि, हम सेट और सूची का उपयोग करके एक Iterrator वस्तु प्राप्त कर सकते हैं, यहाँ देखें:

Iterator ite = Set.iterator(); 
Iterator ite = List.iterator(); 

लेकिन हम केवल सूची इंटरफ़ेस से सूची इटरेटर वस्तु मिलता है, यहाँ देखें:

ListIterator listite = List.listIterator(); 

यानी, हम सेट इंटरफ़ेस से सूची Iterator ऑब्जेक्ट नहीं प्राप्त कर सकते हैं।

  1. इटरेटर का उपयोग करके हम संग्रह ऑब्जेक्ट से तत्वों को केवल आगे की दिशा में पुनर्प्राप्त कर सकते हैं।

    • जहां सूची Iterator के रूप में, जो आपको किसी भी दिशा में पार करने की अनुमति देता है। वह सूची Iterators दो दिशाओं को पार करता है। तो इसमें इटरेटर के अलावा hasPrevious() & previous() अन्य विधियां हैं।
+1

आपने सवाल दोहराया, लेकिन आपने वास्तव में इसका जवाब नहीं दिया था। –

2

ListIteratorIterator से अधिक का लाभ हम समय के किसी भी बिंदु पर तत्व जोड़ सकते हैं, जबकि एक सूची traversing ListIterator का उपयोग कर रहा है।

संबंधित मुद्दे