जावा में बाहरी और आंतरिक इटरेटर क्या है?बाहरी इटरेटर बनाम आंतरिक इटरेटर
उत्तर
यह controls the iteration है।
अन्य विवरण मैं इस description पाया इस सवाल What are the benefits of the Iterator interface in Java?
में हैं:
बाहरी बनाम आंतरिक iterators।
बाहरी इटरेटर - जब पुनरावृत्ति संग्रह वस्तु द्वारा नियंत्रित किया जाता है तो हम कहते हैं कि हमारे पास बाहरी इटरेटर है।
.net या जावा जैसी भाषाओं में बाहरी iterators बनाने के लिए बहुत आसान है। हमारे शास्त्रीय कार्यान्वयन में एक बाहरी इटरेटर लागू किया जाता है। निम्न उदाहरण में एक बाहरी इटरेटर प्रयोग किया जाता है:
// using iterators for a clloection of String objects:
// using in a for loop
for (Iterator it = options.iterator(); it.hasNext();) {
String name = (String)it.next();
System.out.println(name);
}
// using in while loop
Iterator name = options.iterator();
while (name.hasNext()){
System.out.println(name.next());
}
// using in a for-each loop (syntax available from java 1.5 and above)
for (Object item : options)
System.out.println(((String)item));
आंतरिक Iterators - इटरेटर यह नियंत्रित करता है जब हम एक आंतरिक इटरेटर
दूसरी तरफ है को लागू करने और आंतरिक iterators का उपयोग कर वास्तव में मुश्किल है। जब एक आंतरिक इटरेटर का उपयोग किया जाता है तो इसका मतलब है कि कोड चलाया जा सकता है कुल वस्तु को सौंपा गया है। भाषाओं कि के लिए की पेशकश समर्थन में उदाहरण के लिए यह आंतरिक iterators कॉल करने के लिए आसान है:
collection do: [:each | each doSomething] (Smalltalk)
मुख्य विचार कोड संग्रह करने के लिए निष्पादित करने के लिए पारित करने के लिए है। फिर संग्रह आंतरिक रूप से प्रत्येक घटक पर कुछ करने की विधि को कॉल करेगा। C++ में doMethod विधि को पॉइंटर के रूप में भेजना संभव है। सी #, .NET या VB.NET में विधि को प्रतिनिधि के रूप में भेजना संभव है। जावा में Functor
डिज़ाइन पैटर्न का उपयोग किया जाना चाहिए। मुख्य विचार केवल एक विधि (कुछ करना) के साथ आधार इंटरफ़ेस बनाना है। फिर विधि को एक कक्षा में कार्यान्वित किया जाएगा जो इंटरफ़ेस लागू करता है और कक्षा को पुन: संग्रहित करने के लिए संग्रह में पारित किया जाएगा। अधिक जानकारी के लिए Functor
डिज़ाइन पैटर्न देखें।
बाहरी इटरेटर
जब आप एक इटरेटर और इस पर कदम मिलता है, कि एक बाहरी इटरेटर
for (Iterator iter = var.iterator(); iter.hasNext();) {
Object obj = iter.next();
// Operate on obj
}
आंतरिक इटरेटर
है जब आप अधिक चलाने के लिए एक विधि के लिए एक समारोह वस्तु पारित एक सूची, जो एक आंतरिक इटरेटर
var.each(new Functor() {
public void operate(Object arg) {
arg *= 2;
}
});
- 1. PHP इंटरफेस IteratorAggregate बनाम इटरेटर?
- 2. जावा गणना बनाम इटरेटर
- 3. बनाम सूची इटरेटर सूची
- 4. इटरेटर बनाम संदर्भ बनाम सूचक
- 5. इटरेटर?
- 6. इटरेटर
- 7. इटरेटर
- 8. इटरेटर
- 9. इटरेटर
- 10. सी ++ इटरेटर और रिवर्स इटरेटर
- 11. जेनेरिक इटरेटर
- 12. एक इटरेटर
- 13. इटरेटर अंकगणित
- 14. इटरेटर उत्तराधिकारी
- 15. ईएम :: इटरेटर
- 16. इटरेटर इंटरफ़ेस
- 17. आंतरिक बनाम बाहरी कारखाना
- 18. एक इटरेटर कक्षा
- 19. सूची के लिए रिवर्स इटरेटर?
- 20. सी ++ इटरेटर समस्याओं
- 21. इटरेटर ब्लॉक और विरासत
- 22. कस्टम इटरेटर प्रदर्शन
- 23. जावास्क्रिप्ट इटरेटर कक्षा
- 24. सी ++ सेट इटरेटर हटाने
- 25. स्कैला इटरेटर (ए.के.ए. Iterator.init)
- 26. वेक्टर इटरेटर: 'ऑपरेटर ='
- 27. PHP आलसी लोड इटरेटर
- 28. जावा समांतर काम इटरेटर?
- 29. Convert इटरेटर ArrayList को
- 30. इटरेटर, सी ++ क्या हैं?
चूंकि जावा 5 का उपयोग करने के लिए पसंदीदा तरीका एक बाहरी इटरेटर, प्रत्येक लूप के लिए उपयोग करना होगा: * (ऑब्जेक्ट ओ: var) {// NOOP} * के लिए हालांकि यह संस्करण का उपयोग कर स्पष्ट इटरेटर के लिए केवल वाक्य रचनात्मक चीनी है। – Alex
@ जोहानजचार्य फॉरेच लूप को आंतरिक इटरेटर के रूप में नहीं माना जाता है, क्योंकि हमारे पास इटरेटर पर नियंत्रण नहीं है? – denis631
@ denis631 हां, मैं इस बात से सहमत हूं कि फ़ोरैच लूप एक आंतरिक इटरेटर के समान कार्य करता है। मैंने इसे अपने उदाहरण के रूप में उपयोग नहीं किया क्योंकि मेरी समझ यह है कि जावा उन्हें संकलन समय पर बाहरी इटरेटर में बदल देता है। मैंने अंतर को स्पष्ट रूप से स्पष्ट करने के लिए एक कार्यात्मक उदाहरण चुना है। –