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 устарел и что использовать вместо него.