[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-dlya-arraylist-ili-dlya-linkedlist-operatsiya-dobavleniya-elementa-v-seredinu-medlennee":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},457,"dlya-arraylist-ili-dlya-linkedlist-operatsiya-dobavleniya-elementa-v-seredinu-medlennee",12,"collections","Collections","📚","Для ArrayList или для LinkedList операция добавления элемента в середину медленнее","В теории оба списка тратят O(N) на вставку в середину, но по разным причинам. ArrayList тратит время на сдвиг элементов правее позиции вставки через `System.arraycopy()`, а LinkedList — на поиск узла на нужной позиции (обход от начала или конца).\n\nНа практике вставка в середину обычно быстрее для ArrayList, несмотря на то, что теоретическая сложность одинакова. Причины:\n\n- `System.arraycopy()` — это нативная операция, оптимизированная под процессор, копирующая блоки памяти.\n- Последовательное расположение элементов ArrayList в памяти обеспечивает cache-friendly доступ.\n- LinkedList при обходе следует по ссылкам на объекты, разбросанные по heap, что приводит к cache miss.\n\nВ худшем случае (расширение массива + сдвиг) ArrayList может быть медленнее LinkedList, но это редкая ситуация.\n\n> **На собеседовании:** скажите, что в теории одинаково O(N), но на практике ArrayList обычно быстрее из-за System.arraycopy() и cache locality. В худшем случае (расширение массива) может проиграть.","","middle",[15,16],"performance","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Вставка в середину — ArrayList vs LinkedList — Gymterview","Оба O(N), но по разным причинам. ArrayList: сдвиг через System.arraycopy(). LinkedList: поиск позиции. На практике ArrayList обычно быстрее (cache locality).","Вставка в середину: ArrayList vs LinkedList — Gymterview","Оба O(N). ArrayList обычно быстрее на практике: System.arraycopy() + cache locality.",[25,26,27,28,29,30,31,32],"ArrayList","LinkedList","вставка в середину","System.arraycopy","cache locality","O(N)","Java","собеседование","Оба O(N): ArrayList тратит на сдвиг элементов (System.arraycopy), LinkedList — на поиск позиции. На практике ArrayList обычно быстрее из-за cache locality и оптимизированного arraycopy.",true]