[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-stack-schitaetsya-ustarevshim-chem-ego-rekomenduyut-zamenyat-i-pochemu":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":18,"progress":19,"seo":20},466,"stack-schitaetsya-ustarevshim-chem-ego-rekomenduyut-zamenyat-i-pochemu",12,"collections","Collections","📚","Stack считается устаревшим — чем его рекомендуют заменять и почему","`Stack` рекомендуют заменять на `ArrayDeque`. Stack устарел по нескольким причинам:\n\n- Stack наследует Vector, а значит все его методы синхронизированы — лишние накладные расходы в однопоточном коде.\n- Наследование от Vector нарушает абстракцию стека: через унаследованные методы можно обращаться к любому элементу по индексу, вставлять в середину и т.д. Стек должен предоставлять только push(), pop() и peek().\n- Метод `push()` в Stack не синхронизирован (вызывает `addElement()` из Vector), создавая ложное ощущение потокобезопасности.\n\n`ArrayDeque` не имеет этих проблем: нет синхронизации, нет произвольного доступа по индексу, реализован на кольцевом массиве (быстрее связного списка). Для использования как стека применяются методы `push()`, `pop()` и `peek()`.\n\n> **На собеседовании:** назовите три причины: синхронизация, нарушение абстракции (наследование от Vector), ArrayDeque как замена. Покажите, что знаете, почему наследование Vector — это проблема.","","junior",[15,16,17],"performance","основы","jcf",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":36,"featuredSnippetReady":37},"Stack устарел — ArrayDeque как замена — Gymterview","Stack устарел: синхронизация от Vector, нарушение абстракции (доступ по индексу), push() не синхронизирован. Замена — ArrayDeque: push\u002Fpop\u002Fpeek без накладных расходов.","Stack устарел — используйте ArrayDeque — Gymterview","Stack наследует Vector (синхронизация, доступ по индексу). ArrayDeque — быстрая современная замена.",[26,27,28,29,30,31,32,33,34,35],"Stack","ArrayDeque","Deque","push","pop","Vector","synchronized","устаревший","Java","собеседование","Заменять на ArrayDeque. Stack устарел: наследует Vector (синхронизация, произвольный доступ по индексу нарушает абстракцию стека), push() не синхронизирован. ArrayDeque: без синхронизации, без индексного доступа, кольцевой массив.",true]