2015-02-09 6 views
0

Итераторы в Java не работают быстро. Если значения итератора меняются во время повторного итерации, генерируется исключение.Почему итераторы быстро выходят из строя и действительно ли они быстро выходят из строя?

Это чисто, чтобы быть в безопасности? Я уверен, что в некоторых случаях это не имеет значения, если значения меняются. Например, предположим, что вы отправляли некритические предупреждения членам в итераторе каждые 10 секунд - почему вам было бы интересно, если содержимое будет изменено?

Кроме того, неудачная реализация просто проверяет счетчик. Это неверно, если другой поток добавляет и удаляет счет, будет тот же, даже если содержимое итератора будет изменено. Не было бы лучше использовать номер версии?

ответ

1

Неудачное поведение - это исключительно помощь в отладке. Общее правило заключается в том, что если вы изменяете коллекцию, итерации по ней с помощью каких-то иных средств, кроме членов итератора, поведение итератора более не предсказуемо. Он будет генерировать исключение на основе наилучших результатов.

Как таковой, любой способ отслеживания, который стоит дорого, - плохая идея.

Смежные вопросы