Поместите все элементы, которые вы хотите удалить, в отдельный список или установите и удалите их после завершения цикла.В случае удаления всего, установите логическое значение и снова сделайте это после окончания цикла while.Или просто добавьте все элементы в список удаления элементов и удалите их после завершения цикла while, в противном случае вы получите какое-то исключение одновременного изменения.
Обновление
Попробуйте использовать очередь вместо того, что вы делаете здесь.Очередь типа LinkedList
, в которой есть заказ FIFO.LinkedList имеет метод remove()
, который возвращает первый элемент и удаляет его.Используйте его, чтобы получить первый элемент и сравнить его. Если вам нужно сохранить его, добавьте его в список еще раз, и он станет последним элементом.продолжайте делать это до тех пор, пока список не станет пустым, и это должно сделать это для вас.
Это должно быть намного проще, чем ваш код, и вам не нужны итераторы или множественные множества.Если по какой-либо причине вам нужно добавить удаленные элементы в набор (или событие, которое вы хотите сохранить), когда метод remove()
возвращает элемент, добавьте его в любой набор, который вы хотите.