❓ В чем разница между fail-fast и fail-safe итераторами?
❌ Fail-fast итераторы — это те, которые быстро падают при первой же ошибке, потому что написаны на скорострельном C++. А fail-safe итераторы работают медленно, зато безопасно, потому что каждый элемент проверяется антивирусом перед возвратом.
✔️ 🔹 Fail-fast итераторы:→
Бросают ConcurrentModificationException при структурном изменении коллекции во время итерации.→
Проверяют modCount (счетчик модификаций) при каждом вызове next().→
Используются в большинстве коллекций из java.util (ArrayList, HashMap, HashSet).→
Работают на оригинальной коллекции.🔹 Fail-safe итераторы:
→
Работают на копии/снимке коллекции, поэтому не бросают исключений.→
Используются в java.util.concurrent коллекциях (CopyOnWriteArrayList, ConcurrentHashMap).→
Могут не отражать актуальное состояние коллекции (weakly consistent).→
Потребляют больше памяти из-за копирования.🐸 Библиотека собеса по Java#core