Проблема с вашим кодом в том, что каждый раз, когда вы вызываете .next()
, он перемещает итератор вперед на следующую позицию.Это означает, что этот код
if(database.next() == test) {
database.next().add(another_list);
}
не будет работать должным образом, поскольку первый вызов database.next()
не вернет то же значение, что и второй вызов database.next()
.Чтобы исправить это, вам нужно создать временную переменную, которая будет содержать новое значение, как показано здесь:
while(iter.hasNext()) {
/* type */ curr = iter.next();
if(curr == test) {
curr.add(another_list);
}
}
(Заполнение реального типа того, что перебирается вместо /* type */
)
Однако во многих случаях вам не нужно явно использовать итераторы.Большинство типов коллекций реализуют интерфейс Iterable
, и в этом случае вы можете просто написать
/* container */ c;
for(/* type */ curr: c) {
if(curr == test) {
curr.add(another_list);
}
}
Надеюсь, это поможет!