2017-01-11 20 views
7

जाना चाहिए कि मैं कुछ foreach पाश इस तरह है का पता लगाने?पिछले foreach पाश यात्रा

(माफ करना अगर यह एक डुप्लिकेट किए गए सवाल, मैं यहाँ नहीं मिला था इस तरह की कुछ सवाल है)

+5

नहीं, सेट इंटरफ़ेस पर ऐसी कोई विधि नहीं है। वह अमूर्तता एक आदेश का संकेत नहीं देती है, केवल यह एक संग्रह है जहां हर तत्व अद्वितीय है। – duffymo

+0

काउंटर के बिना आप इसे जावा में नहीं कर सकते हैं। – abbath

+0

कृपया बताएं, यदि आप जानते हैं कि वर्तमान तत्व अंतिम है तो आप क्या करना चाहते हैं। ध्यान रखें, 'हैशसेट' पर प्रत्येक के लिए आदेश जारी नहीं रहेगा। – Kent

उत्तर

6

वहाँ नहीं है, How does the Java 'for each' loop work?

पर एक नज़र डालें आप अपने पाश स्पष्ट रूप से एक iterator या किसी पूर्णांक काउंटर का उपयोग करने को बदलना होगा।

+0

एक इटरेटर वास्तव में मेरी मदद कर सकता है! धन्यवाद। – mhery

0

वहाँ विधि में कोई निर्माण करता है, तो वर्तमान तत्व भी पिछले तत्व है की जाँच करने के लिए है। इसके अलावा आप HashSet का उपयोग कर रहे हैं जो रिटर्न ऑर्डर की गारंटी नहीं देता है। भले ही आप इसे देखना चाहते हैं उदा। एक सूचकांक i के साथ अंतिम तत्व हमेशा एक अलग हो सकता है।

0

Set इसके भीतर वस्तुओं के ऑर्डर की गारंटी नहीं देता है। आप एक बार Set के माध्यम से लूप कर सकते हैं और "abc" को "अंतिम आइटम" के रूप में पुनर्प्राप्त कर सकते हैं और अगली बार जब आप पाएंगे कि "hij" Set में "अंतिम आइटम" है।

कहा जा रहा है कि, यदि आप आदेश के बारे में चिंतित नहीं हैं और आप सिर्फ यह जानना चाहते हैं कि मनमाने ढंग से "आखिरी वस्तु" क्या है, तो वर्तमान क्षण में Set को देखते हुए, ऐसा करने के तरीके में नहीं बनाया गया है। आपको काउंटर का उपयोग करना होगा।

4

अन्य answears पूरी तरह से पर्याप्त हैं, बस दिए गए प्रश्न के लिए इस समाधान को जोड़ना।

Set<String> names = new HashSet<>(); 

    //some code 
    int i = 0; 

for (String name: names) { 
    if(i++ == names.size() - 1){ 
     // Last iteration 
    } 
    //some code 

} 
+0

धन्यवाद। अंतिम लूप की जांच करने के लिए प्रत्येक पाश के लिए अच्छा समाधान। हालांकि यह एक इटरेटर के साथ लूप के लिए उपयोग करने के समान ही है। फिर भी, अच्छा समाधान! – NiallMitch14

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