Gymterview
junior

Чем отличается ArrayList от Vector

ArrayList и Vector — это реализации List на основе динамического массива, но с ключевыми отличиями в синхронизации и стратегии роста.

Характеристика ArrayList Vector
Синхронизация Нет Все методы synchronized
Стратегия роста Увеличивается в 1.5 раза Удваивается
Производительность Быстрее Медленнее (из-за synchronized)
Итератор fail-fast (Iterator) fail-fast (Iterator) + Enumeration
Версия Java 1.2 (JCF) 1.0 (legacy)
Статус Рекомендуется Устаревший

Синхронизация Vector поэлементная: каждый вызов метода захватывает монитор. Это неэффективно, потому что составные операции (например, «проверить размер и добавить элемент») всё равно требуют внешней синхронизации. Вместо Vector рекомендуется Collections.synchronizedList(new ArrayList<>()) или CopyOnWriteArrayList.

На собеседовании: назовите два отличия: синхронизация и стратегия роста. Объясните, почему Vector устарел и что использовать вместо него.