Нет такой вещи, и Iterator
х Collection
.Итератор может быть создан независимо от Collection
.Он может быть получен из любого Iterable
, или вы даже можете создать класс, реализующий итератор.
Однако вы можете получить ArrayList
из Iterator
, перебирая его и добавляя его элементы по одномуone:
Iterator<X> it = ...;
List<X> list = new ArrayList<X>();
while (it.hasNext()) {
list.add(it.next());
}
Обратите внимание, однако, что это не может быть сделано надежно для каждого возможного итератора, поскольку существует вероятность того, что итератор будет повторяться вечно, вызывая, таким образом, бесконечный цикл и, скорее всего, OutOfMemoryError
.
Я бы посоветовал вам взглянуть на Google Guava , служебную библиотеку от Google.У него есть класс Lists, который позволяет вам выполнять следующие действия:
Iterator<X> it = ...;
List<X> list = Lists.newArrayList(it);
В библиотеке имеется множество методов, чрезвычайно полезных для повседневного кодирования Java.Он содержит в основном все, что вы хотите, но не можете найти в стандартном API Java 6.