[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-zachem-v-arraylist-khranit-otdelno-size-esli-vsegda-mozhno-vzyat-elementdata-length":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},458,"zachem-v-arraylist-khranit-otdelno-size-esli-vsegda-mozhno-vzyat-elementdata-length",12,"collections","Collections","📚","Зачем в ArrayList хранить отдельно size, если всегда можно взять elementData.length","Поле `size` хранит фактическое количество элементов в списке, тогда как `elementData.length` — это емкость (capacity) внутреннего массива, которая всегда больше или равна size.\n\nArrayList выделяет массив с запасом, чтобы не создавать новый массив при каждом add(). Например, после `new ArrayList\u003C>(10)` массив имеет длину 10, но size = 0. После добавления трех элементов: `elementData.length = 10`, а `size = 3`. Ячейки с индексами 3-9 содержат null и не являются элементами списка.\n\nЕсли бы вместо size использовался elementData.length, список считал бы null-ячейки элементами, что нарушило бы корректность методов get(), contains(), iterator() и других.\n\n> **На собеседовании:** объясните разницу между size (количество элементов) и capacity (размер массива). Покажите, что знаете, зачем ArrayList выделяет массив с запасом.","","junior",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":32,"featuredSnippetReady":33},"Зачем ArrayList хранит size отдельно от elementData.length — Gymterview","size — фактическое количество элементов, elementData.length — ёмкость массива (capacity). Массив выделяется с запасом, null-ячейки — не элементы списка.","size vs elementData.length в ArrayList — Gymterview","size — количество элементов, length — ёмкость массива. Массив всегда больше или равен size.",[25,26,27,28,29,30,31],"ArrayList","size","capacity","elementData","length","Java","собеседование","size — фактическое количество элементов, elementData.length — ёмкость (capacity) массива, которая всегда >= size. Массив выделяется с запасом. Без size список считал бы null-ячейки элементами, нарушая корректность get(), contains(), iterator().",true]