जावा ने इन दो इंटरफेस को एक संग्रह में संग्रहीत डेटा को एक-एक करके पार करने के लिए प्रदान किया। इटरेटर और लिस्ट इटरेटर का आंतरिक कार्यान्वयन उन्हें अलग बनाता है लेकिन दोनों इटरेटर का मुख्य एजेंडा एक ही है।
Iterator और ListIterator के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
वरिष्ठ। नहीं. | कुंजी | <वें शैली="पाठ्य-संरेखण:केंद्र;">पुनरावर्तकवें> <वें स्टाइल ="टेक्स्ट-एलाइन:सेंटर;"> लिस्टइटरेटर||
---|---|---|---|
1 | लागू | इटरेटर का उपयोग संग्रह के प्रकार पर ध्यान दिए बिना किसी भी संग्रह को पार करने के लिए किया जा सकता है। | सूची पुनरावर्तक का उपयोग केवल पुनरावृति करने के लिए किया जा सकता है केवल सूची संग्रह कार्यान्वित वर्ग जैसे सरणीसूची, लिंक्डलिस्ट आदि। |
2 | कॉलिंग | जैसा कि उल्लेख किया गया है, Iterator का उपयोग सभी संग्रहों में तत्वों की गणना करने के लिए किया जाना चाहिए, जैसे सेट, सूची, कतार, डेक और मैप इंटरफ़ेस के सभी कार्यान्वित वर्गों में भी। इटरेटर ऑब्जेक्ट को संग्रह इंटरफ़ेस के इटरेटर () विधि को कॉल करके बनाया जा सकता है। | दूसरी ओर, ListIterator का उपयोग तब किया जाना चाहिए जब हम List के तत्वों की गणना करना चाहते हैं। ListIterator का ऑब्जेक्ट सूची इंटरफ़ेस में मौजूद listIterator() विधि को कॉल करके बनाया जा सकता है। |
3 | डेटा ट्रैवर्स | इटरेटर के मामले में डेटा ट्रैवर्स केवल एक दिशा में संभव है क्योंकि इटरेटर केवल आगे की दिशा में ही ट्रैवर्स कर सकता है | सूची इटरेटर आगे और पीछे दोनों दिशाओं में ट्रैवर्स कर सकता है जिससे डेटा दोनों दिशाओं में ट्रैवर्स हो जाता है। |
4 | हटाना | इटरेटर के मामले में किसी तत्व को हटाने की अनुमति नहीं है। | ListIterator सूची संग्रह में एक तत्व को बदल सकता है। |
5 | जोड़ | एक पुनरावर्तक के मामले में एक तत्व को जोड़ने की अनुमति नहीं है क्योंकि यह ConcurrentModificationException को फेंकता है। | ListIterator किसी भी समय आसानी से सूची संग्रह में एक तत्व जोड़ सकता है। |
6 | संशोधन | एक पुनरावर्तक के मामले में किसी तत्व के संशोधन की अनुमति नहीं है क्योंकि यह ConcurrentModificationException फेंकता है। | ListIterator सेट () विधि को कॉल करके किसी भी समय आसानी से सूची संग्रह में एक तत्व को संशोधित कर सकता है। |
7 | तत्व का सूचकांक | एक पुनरावर्तक का उपयोग करते समय संग्रह में ट्रैवर्स किए गए तत्व की अनुक्रमणिका प्राप्त नहीं कर सकता है। | ListIterator में सूची को पार करते समय किसी भी समय तत्वों की अनुक्रमणिका प्राप्त करने के लिए nextIndex() और lastIndex() जैसी विधियां हैं। |
इटरेटर बनाम लिस्टइटरेटर का उदाहरण
JavaTester.java
import java.io.*; import java.util.*; public class JavaTester { public static void main(String[] args){ ArrayList<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); //Iterator Iterator itr = list.iterator(); System.out.println("Iterator traversal:"); while (itr.hasNext()) System.out.print(itr.next() + " "); System.out.println(); // ListIterator ListIterator i = list.listIterator(); System.out.println("ListIterator Forward traversal:"); while (i.hasNext()){ System.out.print(i.next() + " "); System.out.println(); System.out.println("ListIterator Backward traversal : "); } while (i.hasPrevious()){ System.out.print(i.previous() + " "); System.out.println(); } } }
आउटपुट
Iterator traversal: 1 2 3 4 5 ListIterator Forward traversal: 1 ListIterator Backward traversal : 2 ListIterator Backward traversal : 3 ListIterator Backward traversal : 4 ListIterator Backward traversal : 5 ListIterator Backward traversal : 5 4 3 2 1