2012-06-13 8 views
6

से कोई उदाहरण पता है कि किसी इटरेटर उदाहरण से सूची बनाने का कोई मानक तरीका है या नहीं?सूची <T> इटरेटर <T>

+1

आप इटरेटर से सूची नहीं बना सकते, तो आप सूची बना सकते हैं और इसके तत्वों पर इटरेटर। – Sajmon

+0

यह 'Iterator' से' सूची 'बनाने के लिए वास्तव में समझ में नहीं आता है। यह सिर्फ एक सूचकांक से एक सरणी बनाने की तरह है! – adarshr

+0

यदि आपके पुनरावर्तक के पास पहले से ही 'अगला()' फ़ंक्शन कहा गया है, तो आप कभी भी पिछले तत्वों को पुनर्प्राप्त करने में सक्षम नहीं होंगे। –

उत्तर

14

मैं Guava's Lists.newArrayList(Iterator) की ओर जाते हैं, क्योंकि मैं आम तौर पर एक निर्भरता के रूप में अमरूद, और यह पहले से मौजूद है।

3

प्रत्येक तत्व प्राप्त करने के लिए Iterator का उपयोग करें और इसे List पर जोड़ें। निम्नलिखित की तरह

List<String> list = new LinkedList<String>(); 

while(iter.hasNext()) { // iter is of type Iterator<String> 
    list.add(iter.next()); 
} 
+1

धन्यवाद, मैंने यही किया, लेकिन मैं कुछ जादू विधि की उम्मीद कर रहा था मेरी मदद करने के लिए बाहर :) :) – BillMan

+0

यदि आप जादू विधियों चाहते थे, तो आपको PHP का उपयोग करना चाहिए था;) – tskuzzy

+0

यदि आप जादू विधियों चाहते थे, तो आपको तीसरे पक्ष के पुस्तकालयों का उपयोग करना चाहिए था। –

0

कोशिश कुछ:

public T List<T> listFromIterator(Iterator<T> iterator) { 

List<T> result = new LinkedList<T>(); 
    while(iterator.hasNext()) { 
    result.add(iterator.next()); 
    } 

} 

एक बात ध्यान दें कि यदि इटरेटर आपके संरचना की शुरुआत में नहीं है, तो आप पिछले तत्व पुन: प्राप्त करने का कोई तरीका नहीं है।

यदि आपके पास यह संग्रह है कि इटेटरेटर है, तो आप एक कन्स्ट्रक्टर का उपयोग करके एक सूची बना सकते हैं जो संग्रह लेता है। पूर्व: LinkedList निर्माता:

LinkedList(Collection<? extends E> c) 
0

इस तरह है कि मैं सूची से परिवर्तित इटरेटर और इसके विपरीत है।

ArrayList arrayList = new ArrayList(); 
// add elements to the array list 
arrayList.add("C"); 
arrayList.add("A"); 
arrayList.add("E"); 
arrayList.add("B"); 
arrayList.add("D"); 
arrayList.add("F"); 

// use iterator to display contents of arrayList 
System.out.print("Original contents of arrayList: "); 
Iterator iterator = arrayList.iterator(); 
ArrayList arrayList2 = new ArrayList(); 

while(iterator.hasNext()) { 

    Object element = iterator.next(); 
    arrayList2.add(element); 
    System.out.print(element + " "); 

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