2012-06-13 6 views
6

Wer weiß, ob es eine Standardmethode zum Erstellen einer Liste aus einer Iterator-Instanz gibt?Liste erstellen <T> Instanz von Iterator <T>

+1

Sie Liste erstellen kann nicht von Iterator, Sie Liste erstellen und Iterator über seine Elemente. – Sajmon

+0

Es macht nicht wirklich Sinn, eine 'List' aus einem' Iterator' zu erstellen. Es ist wie ein Array aus nur einem Index zu erstellen! – adarshr

+0

Wenn Ihr Iterator bereits die Funktion 'next()' aufgerufen hat, können Sie nie vorhergehende Elemente abrufen. –

Antwort

3

Verwenden Sie die Iterator, um jedes Element zu erhalten und fügen Sie es zu einem List hinzu.

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

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

Danke, das habe ich gemacht, aber ich hatte auf eine magische Methode gehofft da draußen, um mir zu helfen :) – BillMan

+0

Wenn Sie magische Methoden wollten, sollten Sie PHP verwendet haben;) – tskuzzy

+0

Wenn Sie magische Methoden wollten, sollten Sie Bibliotheken von Drittanbietern verwendet haben. –

0

versuchen, etwas wie folgt aus:

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

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

} 

Eines ist zu beachten, dass, wenn der Iterator nicht am Anfang Ihrer Struktur ist, Sie haben keine Möglichkeit vorherigen Elemente abgerufen werden.

Wenn Sie über die Auflistung verfügen, aus der der Iterator stammt, können Sie eine Liste erstellen, indem Sie einen Konstruktor verwenden, der eine Auflistung abruft. ex: der LinkedList Konstruktor:

LinkedList(Collection<? extends E> c) 
0

Dies ist der Weg, den ich von List Iterator konvertieren und umgekehrt.

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 + " "); 

} 
Verwandte Themen