2012-06-13 12 views
6

¿Alguien sabe si existe una forma estándar de crear una lista a partir de una instancia de iterador?Crear lista <T> instancia de Iterator <T>

+1

no se puede crear una lista de iterador, puede crear lista e iterador sobre sus elementos. – Sajmon

+0

Realmente no tiene sentido crear una 'Lista' de un' Iterador'. ¡Es como crear una matriz a partir de solo un índice! – adarshr

+0

Si su iterador ya ha llamado a su función 'next()', nunca podrá recuperar los elementos anteriores. –

Respuesta

3

Usa Iterator para obtener cada elemento y agrégalo a List.

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

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

Gracias, eso es lo que hice, pero esperaba algún método mágico por ahí para ayudarme :) – BillMan

+0

Si querías métodos mágicos, deberías haber usado PHP;) – tskuzzy

+0

Si querías métodos mágicos, deberías haber usado bibliotecas de terceros. –

0

intentar algo así como lo siguiente:

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

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

} 

Una cosa a tener en cuenta es que si el iterador no se encuentra al comienzo de su estructura, que no hay manera de recuperar los elementos anteriores.

Si tiene la colección de la que proviene el iterador, puede crear una lista utilizando un constructor que tome una colección. por ejemplo: la LinkedList constructor:

LinkedList(Collection<? extends E> c) 
0

Ésta es la forma en que me convierto de la Lista de iterador y viceversa.

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

} 
Cuestiones relacionadas