2013-02-01 40 views
6

से एनएच तत्व प्राप्त करने के लिए मेरे पास Collection है और एनटी तत्व को Iterator द्वारा लौटाए जाने की आवश्यकता है। मुझे पता है कि मैं Iterator तत्वों के माध्यम से गिनती करते समय पुनरावृत्ति कर सकता हूं। क्या कोई तृतीय पक्ष लाइब्रेरी (Google Guava या Apache Commons) है जो यह करता है?जावा लाइब्रेरी संग्रह या Iterable

उत्तर

8

अमरूद के Iterators.get(Iterator<T>, int) मदद कर सकते हैं

अग्रिम स्थिति + 1 बार iterator, positionth स्थान पर तत्व लौटने।

+0

अच्छा, ठीक है, मैं –

+5

के लिए क्या देख रहा था वैकल्पिक रूप से 'Iterables.get (Iterable, int)' सीधे 'संग्रह' पर उपयोग किया जा सकता है। –

0

संपादित करें: इसे अनदेखा करें, प्रश्न के हिस्से को पढ़ें।


तुम इतनी तरह जा सकते हैं:

for(int counter = 0; counter < max; counter++) 
    current = iterator.next(); 

उसके बाद, वर्तमान इटरेटर से प्रेरित आदेश की अधिकतम-वें तत्व हो जाएगा।

+0

कृपया प्रश्न पढ़ें और नोट करें "मुझे पता है कि इसके इटरेटर तत्वों के माध्यम से गिनती करते समय मैं पुनरावृत्ति कर सकता हूं" –

+0

क्षमा करें, उस पर पढ़ना होगा। संग्रह को मानना ​​एक आदेशित डेटा संरचना (जैसे एवीएल या स्किप सूची) में नहीं है, किसी तृतीय पक्ष लाइब्रेरी की तलाश में वास्तव में आपकी मदद नहीं करेगा, यह हमेशा रैखिक समय खोज होगी। इस तरह की एक डेटा संरचना का निर्माण सुपर-रैखिक समय लेगा, इसलिए जब तक कि आप उस रैखिक रूप से कई बार (अर्थात् एम-वें तत्व के लिए एन लुकअप) करने की योजना बना रहे हैं, तो यह केवल छोटे तरीके से करने से अधिक महंगा होगा। –

+0

हां, बेशक यह रैखिक खोज है। इससे मदद मिलती है कि मेरे पास नया कोड नहीं है और एक सिद्ध तृतीय पक्ष लाइब्रेरी पर भरोसा कर सकता है। –

0

Iterators.get(Iterator iterator, int position) का उपयोग कर myCollection में 3 तत्व प्राप्त करने के लिए का एक उदाहरण:

com.google.common.collect.Iterators.get(myCollection.iterator(), 3); 

मामले में ऊपर पूरी तरह से योग्य नाम का इस्तेमाल किया है यह आवश्यक है, उदाहरण के लिए ग्रहण के प्रदर्शन दृश्य में।

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