Назад к вопросам
Junior
80
questionbank
Что такое ёмкость (capacity) в контексте Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ёмкость — это максимальное количество элементов, которое может хранить коллекция до того, как потребуется изменить ее внутреннее представление (например, массив). При достижении емкости, коллекция обычно создает новое внутреннее хранилище большего размера и копирует туда старые элементы.
Рассмотрим ArrayList как пример:
// Создание ArrayList с начальной емкостью 10 (по умолчанию)
ArrayList<String> list = new ArrayList<>();
// Добавление элементов. Пока емкость достаточна.
list.add("Element 1");
list.add("Element 2");
// Если добавим более 10 элементов, ArrayList увеличит свою емкость.
// Обычно это происходит путем создания нового массива большего размера
// (например, в 1.5 раза больше текущей емкости) и копирования элементов.
Концепция емкости важна для понимания производительности:
- Недостаточная начальная емкость может привести к частым операциям изменения размера и копирования, что снижает производительность при добавлении множества элементов.
- Избыточная начальная емкость может привести к неэффективному использованию памяти, особенно если коллекция в итоге будет содержать мало элементов.
Некоторые коллекции, такие как HashMap, также имеют концепцию, связанную с емкостью (количество "корзин" или "букетов") и коэффициентом загрузки (load factor), но основное понятие емкости чаще всего относится к структурам на основе массивов вроде ArrayList или Vector.