Ktoś wie, czy istnieje standardowy sposób tworzenia listy z instancji Iterator?Utworzenie listy <T> wystąpienie z Iterator <T>
6
A
Odpowiedz
14
I mają tendencję do Guava's Lists.newArrayList(Iterator)
ponieważ zazwyczaj mają Guava postaci uzależnienia, już istnieje.
3
Użyj Iterator
, aby uzyskać każdy element i dodać go do List
.
List<String> list = new LinkedList<String>();
while(iter.hasNext()) { // iter is of type Iterator<String>
list.add(iter.next());
}
0
spróbować czegoś tak:
public T List<T> listFromIterator(Iterator<T> iterator) {
List<T> result = new LinkedList<T>();
while(iterator.hasNext()) {
result.add(iterator.next());
}
}
Jedną rzeczą jest, aby pamiętać, że jeśli iterator nie jest na początku swojej struktury, nie ma sposobu pobierania poprzednie elementy.
Jeśli masz kolekcję, z której pochodzi iterator, możesz utworzyć listę przy użyciu konstruktora pobierającego kolekcję. ex: konstruktor LinkedList
:
LinkedList(Collection<? extends E> c)
0
ten sposób, że przekonwertować z listy do Iterator i vice versa.
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 + " ");
}
5
miałem taką potrzebę, a jako użytkownik Apache Commons, to co zrobiłem:
IteratorUtils.toList(iterator);
nie można utworzyć listę z Iterator, można utworzyć listę i Iterator nad jego elementami. – Sajmon
Naprawdę nie ma sensu tworzenie "Listy" z 'Iteratora'. To jak tworzenie tablicy z tylko indeksu! – adarshr
Jeśli twój iterator miał już swoją funkcję "next()", nigdy nie będziesz w stanie odzyskać poprzednich elementów. –