2009-06-29 13 views

उत्तर

37

जेरेमी ने जो कहा उसके अलावा, इसका मुख्य लाभ यह है कि इसमें सिंटैक्टिक चीनी का अपना थोड़ा सा हिस्सा है: enhanced for-loop। यदि आप हैं, कहते हैं, एक Iterable<String>, तो आप कर सकते हैं:

for (String str : myIterable) { 
    ... 
} 

अच्छा और आसान है, है ना? Iterator<String> बनाने के सभी गंदे काम, यह जांच कर रहे हैं कि यह hasNext() है, और str = getNext() पर कॉल करने से संकलक द्वारा दृश्यों के पीछे संभाला जाता है।

और चूंकि अधिकांश संग्रह या तो Iterable लागू करने या एक राय यह है कि रिटर्न है एक, इस संग्रह के साथ बहुत आसान काम कर रहा है (जैसे Map के keySet() या values() के रूप में)।

Iterable JavadocIterable को लागू करने वाले वर्गों की पूरी सूची देता है।

11

यदि आपके पास एक जटिल डेटा सेट है, जैसे पेड़ या हेलीकल कतार (हाँ, मैंने अभी इसे बनाया है), लेकिन आप परवाह नहीं करते यह आंतरिक रूप से कैसे संरचित है, तो आप बस सभी तत्वों को प्राप्त करना चाहते हैं एक करके, आप इसे एक पुनरावर्तक वापस करने के लिए मिलता है।

प्रश्न में जटिल वस्तु, यह एक पेड़ या कतार या एक WombleBasket लागू Iterable हो, और एक इटरेटर ऑब्जेक्ट वापस कर सकते हैं कि आप Iterator विधियों का उपयोग कर क्वेरी कर सकते हैं।

इस तरह, आप इसे पूछ सकते हैं कि यह hasNext() है, और यदि ऐसा होता है, तो आपको next() आइटम मिलता है, बिना पेड़ से या कहीं भी इसे प्राप्त करने के लिए।

3

आईटरेटर मूल रूप से किसी संग्रह पर पुनरावृत्ति की अनुमति देते हैं।

जावा के प्रत्येक नियंत्रण कथन के लिए यह भी आवश्यक है।

5

यह java.util.Iterator देता है। यह मुख्य रूप से लागू करने प्रकार संकलक list.iterator() और दोहराता यह आप पाश के लिए i अंदर देने के कॉल हुड के अंतर्गत पाश

List<Item> list = ... 
for (Item i:list) { 
// use i 
} 

के लिए बढ़ाया में उपयोग करने के लिए सक्षम होने के लिए प्रयोग किया जाता है।

+0

आह - बहुत धीमी ;-) –

+2

अभी तक का सबसे अच्छा जवाब है। –

3

एक इंटरफ़ेस अपने दिल में विधियों की एक सूची है जो एक वर्ग को लागू करना चाहिए। पुनरावर्तनीय इंटरफ़ेस बहुत आसान है - लागू करने के लिए केवल एक ही विधि है: Iterator()। जब कोई वर्ग Iterable इंटरफ़ेस लागू करता है, तो यह अन्य वर्गों को बता रहा है कि आप ऑब्जेक्ट में डेटा (यानी, ट्रैवर्स) को फिर से चलाने के लिए उपयोग करने के लिए Iterator ऑब्जेक्ट प्राप्त कर सकते हैं।

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