[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-chem-otlichaetsya-arraylist-ot-linkedlist":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},444,"chem-otlichaetsya-arraylist-ot-linkedlist",12,"collections","Collections","📚","Чем отличается ArrayList от LinkedList","`ArrayList` — это динамический массив, а `LinkedList` — двусвязный список. Каждая структура оптимизирована для разных сценариев.\n\nArrayList:\n\n- Доступ по индексу за O(1) — прямое обращение к элементу массива.\n- Поиск по значению за O(N) — линейный перебор.\n- Вставка\u002Fудаление в конец в среднем за O(1), но при исчерпании емкости — O(N) на копирование.\n- Вставка\u002Fудаление в середину за O(N) — сдвиг элементов через System.arraycopy().\n- Минимальные накладные расходы на хранение (только ссылки в массиве).\n\nLinkedList:\n\n- Доступ по индексу за O(N) — последовательный обход от начала или конца.\n- Доступ к первому и последнему элементу за O(1).\n- Вставка\u002Fудаление в начало и конец за O(1).\n- Вставка\u002Fудаление в произвольную позицию за O(1), но поиск позиции за O(N).\n- Большие накладные расходы: каждый элемент — объект Node с двумя ссылками.\n\nНа практике `ArrayList` предпочтителен в абсолютном большинстве случаев. Он выигрывает за счет локальности данных в кэше процессора: элементы массива лежат рядом в памяти, что позволяет CPU эффективно предзагружать данные. Элементы LinkedList разбросаны по heap, что приводит к cache miss при обходе.\n\n> **На собеседовании:** начните с таблицы сложностей. Объясните, почему ArrayList быстрее на практике даже там, где LinkedList выигрывает теоретически (cache locality). LinkedList оправдан только при частых вставках\u002Fудалениях в начало.","","junior",[15,16,17],"performance","основы","jcf",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":35,"featuredSnippetReady":36},"ArrayList vs LinkedList — отличия и когда использовать — Gymterview","ArrayList — динамический массив с O(1) доступом по индексу. LinkedList — двусвязный список с O(1) вставкой в начало\u002Fконец. Сравнение сложности и cache locality.","ArrayList vs LinkedList — сравнение — Gymterview","ArrayList: O(1) по индексу, cache-friendly. LinkedList: O(1) вставка в начало\u002Fконец. На практике ArrayList быстрее.",[26,27,28,29,30,31,32,33,34],"ArrayList","LinkedList","сложность","O(1)","O(N)","cache locality","System.arraycopy","Java","собеседование","ArrayList — динамический массив: O(1) доступ по индексу, cache-friendly. LinkedList — двусвязный список: O(1) вставка в начало\u002Fконец, O(N) доступ по индексу. На практике ArrayList предпочтительнее из-за cache locality.",true]