- 1
- 2
- 3
- 4
- 5
for (int j = 0; j < fieldsToRemove.size(); j++) {
if (fieldsToDelete.getField(j).getKind().equals("GroupField")) {
resFieldContr.remove(j--);
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+76
for (int j = 0; j < fieldsToRemove.size(); j++) {
if (fieldsToDelete.getField(j).getKind().equals("GroupField")) {
resFieldContr.remove(j--);
}
}
собственно цикл.
нашел в рабочем проекте
Можно
но это длиннее и непривычно.
Ну и для длинных списков и большого количества удалений имеет смысл избавиться от O(N^2):
с хвоста перебрать элементы религия не позволяет?
К тому же, нормальная практика получать в цикле ссылку (указатель) на следующий элемент для обработки,
не зависимо от того, удаляется текущий или нет.
Я считаю, что изменение переменной цикла должно быть локализовано, так проще понять его назначение и совершить меньше ошибок.
Итератор на то и имеет метод remove, чтобы можно было текущий элемент удалить.
И вообще, предлагаю запустить код.
Удалять из итератора можно. Нельзя удалять напрямую из коллекции, по которой создан итератор.
я пальцем в лужу, бывает)