2013-02-05 42 views
7

मैं iterator सिद्धांत के साथ पाश के लिए एक का उपयोग करने के प्यार करता हूँ, जैसेइटरेटर का उपयोग करते समय अंतिम तत्व कैसे निर्धारित करें?

for(String s : collectionWithStrings) 
    System.out.println(s + ", "); 

प्रश्न: मैं कैसे निर्धारित कर सकते हैं वर्तमान तत्व पिछले एक है?

int = 0; i < collection.size(); i++ जैसे इंडेक्स के साथ यह i == collection.size() - 1 के साथ संभव है, लेकिन अच्छा नहीं है। क्या ऊपर दिए गए उदाहरण के लिए एक इटरेटर के साथ अंतिम तत्व निर्धारित करना भी संभव है?

+0

नहीं। आप, स्थिति के लिए जाँच अन्य syle के लिए स्विच करना चाहते हैं। – leonbloy

+0

बढ़ाया फॉर-लूप बल्कि विशिष्ट है। इसका काम कुछ बहुत ही सरल, लेकिन अक्सर होने वाले मामलों के लिए एक बहुत छोटा, सरल प्रतिनिधित्व प्रदान करना है। यदि आपको इससे प्राप्त होने में परेशानी हो रही है, तो इसका उपयोग न करें। –

उत्तर

8

दरअसल, Iterator#hasNext विधि एक बूलियन निर्धारित करती है कि क्या इटरेटर next विधि के साथ एक और तत्व लौटाएगा। अपने खुद के काउंटर बनाए रखने के बिना

Iterator<String> iterator = collectionWithString.iterator(); 
while(iterator.hasNext()) { 
    String current = iterator.next(); 
    // if you invoke iterator.hasNext() again you can know if there is a next element 
} 
+0

हां, लेकिन आपको उपरोक्त दिखाए गए 'फॉर लूप' के साथ इटरेटर तक पहुंच नहीं दी गई है। –

+0

@ डंकन जोन्स हां, लेकिन ओपी ने भी पूछा कि क्या यह ऊपर दिए गए उदाहरण के लिए एक इटरेटर के साथ अंतिम तत्व निर्धारित करना भी संभव है? _ – Gamb

+0

क्षमा करें, मेरी गलती! –

3

यह संभव नहीं है एक enhanced for loop साथ:

आपका यात्रा इस के रूप में रखा जा सकता है। ईमानदार होने के लिए, यह मेरा निर्णय लेने वाला कारक है जब मैं चुनता हूं कि किस प्रकार का लूप उपयोग करना है।

Iterator का उपयोग करते समय, किसी के पास hasNext() विधि तक पहुंच है जो अंतिम तत्व को संसाधित करते समय झूठी वापसी करेगा।

+0

धन्यवाद। यह लूप प्रकार के लिए भी मेरा निर्णायक कारक था। जैसा कि यह खड़ा है, यह भविष्य के लिए मेरा निर्णायक कारक होगा। :) –

5

बस hasNext विधि का उपयोग करें।

if(!iterator.hasNext()) { 
    // this is the last element 
} 

आम तौर पर, हम एक Iterator का उपयोग कर पुनरावृति के रूप में इतना:

while(iterator.hasNext()) { 
    Object obj = iterator.next(); 
}