Вы входите в цикл for
несколько раз, но можете войти в цикл while
только при первом проходе через цикл for
.
Итератор, it
определен внецикл for
и назначается только один раз.
При первом цикле for
вы вводите цикл while
:
while(it.hasNext()){
int element = it.next();
...
}
, который полностью исчерпывает итератор.Каждый последующий раз в цикле for
, it.hasNext()
ложно, поэтому цикл while
ничего не делает.
Вы также пытаетесь повторно использовать nextLevel
и currentLevel
, но этиназначаются только один раз.Так что currentLevel
будет содержать только последний набор элементов, добавленных к nextLevel
.
Если я попытаюсь добавить дополнительные элементы в массив nextLevel после цикла while, это выдаст мне ошибку в строке
Возможно, вы получаете исключение одновременной модификации.Вы не можете использовать итератор для списка после его изменения.https://stackoverflow.com/a/1496206/20394 объясняет, как бороться с этими проблемами.