[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-zachem-dobavili-arraylist-esli-uzhe-byl-vector":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},443,"zachem-dobavili-arraylist-esli-uzhe-byl-vector",12,"collections","Collections","📚","Зачем добавили ArrayList, если уже был Vector","`ArrayList` добавили в Java 1.2 вместе с JCF, потому что синхронизация `Vector` оказалась неэффективной для большинства задач. В подавляющем большинстве случаев коллекция используется из одного потока, и накладные расходы на захват и освобождение монитора при каждом вызове метода бессмысленны.\n\nКроме того, поэлементная синхронизация Vector не решает проблему составных операций: если нужно атомарно проверить размер и вставить элемент, всё равно требуется внешняя синхронизация. `ArrayList` убрал ненужную синхронизацию и добавил оптимизированную стратегию роста (1.5x вместо 2x), что экономит память.\n\n> **На собеседовании:** объясните через принцип «не платите за то, что не используете». Синхронизация Vector не нужна в 95% случаев, а когда нужна — она недостаточна.","","junior",[15,16],"performance","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Зачем добавили ArrayList если был Vector — Gymterview","ArrayList добавили, т.к. синхронизация Vector неэффективна в 95% случаев. Принцип: не платите за то, что не используете. Рост 1.5x экономнее 2x.","Зачем добавили ArrayList при наличии Vector — Gymterview","Синхронизация Vector не нужна в 95% случаев, а когда нужна — недостаточна для составных операций.",[25,26,27,28,29,30,31,32],"ArrayList","Vector","синхронизация","производительность","JCF","Java 1.2","Java","собеседование","Синхронизация Vector не нужна в 95% случаев (однопоточный код), а когда нужна — недостаточна (составные операции требуют внешней синхронизации). ArrayList убрал ненужную синхронизацию и оптимизировал рост (1.5x вместо 2x).",true]