Можно ли объединить итераторы в Java? У меня есть два итератора, и я хочу объединить / объединить их, чтобы я мог перебирать их элементы за один раз (в одном цикле), а не за два шага. Это возможно?
Обратите внимание, что количество элементов в двух списках может быть разным, поэтому один цикл по обоим спискам не является решением.
Iterator<User> pUsers = userService.getPrimaryUsersInGroup(group.getId());
Iterator<User> sUsers = userService.getSecondaryUsersInGroup(group.getId());
while(pUsers.hasNext()) {
User user = pUsers.next();
.....
}
while(sUsers.hasNext()) {
User user = sUsers.next();
.....
}
переместите свой цикл в метод и передайте итератор в метод.
void methodX(Iterator x) {
while (x.hasNext()) {
....
}
}
Итератор исходит из коллекции или набора.
почему бы не использовать уже доступный метод
Collection.addAll(Collection c);
, а затем создайте свой итератор из последнего объекта.
таким образом, ваш итератор будет перебирать все содержимое обеих коллекций.
каждый объект Iterator
содержит собственное место в памяти (адрес), так что вы не можете просто "объединить" их. за исключением случаев, когда вы расширяете класс iterator
и пишете там свою собственную реализацию.
Если вы имеете дело с одинаковым числом объектов в обоих итераторах, альтернативным решением будет обработка двух итераторов в одном цикле следующим образом:
while (iterator1.hasNext() && iterator2.hasNext()) {
// code
}