ArrayList логический размер равен емкости - PullRequest
0 голосов
/ 21 февраля 2012

Когда логический размер массива достигает своей емкости, он связывает новый массив до конца или создает новый массив и копирует все значения в новый массив?

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Вы можете получить лучший ответ (т. Е. Более целенаправленный, более полезный для вас), если указать, какой язык (языки) вас интересует. Многие распространенные реализации используют блок значений (включая указатели, если массивуказатели);Когда пространство в блоке заканчивается, выделяется больший блок, существующие значения копируются в новое пространство, а старое пространство освобождается.Иногда вы можете повлиять на то, как это происходит (например, насколько больше новое пространство по сравнению со старым), но (конечно) это зависит от реализации.В большинстве реализаций каждый раз, когда вы добавляете или удаляете один элемент, убедитесь, что перераспределение пространства не происходит.Это подразумевает, что в таких реализациях есть неиспользуемое пространство.

Опять же, если у вас есть более конкретный интерес, предложите попробовать отредактировать ваше сообщение, чтобы немного сфокусировать его.

Если вы просто хотите узнать, как учитьсяЯ бы предложил поиграть с Python.Много вещей на StackOverflow вы можете найти интересным;Вот только пара: размер массива , производительность .

0 голосов
/ 21 февраля 2012

Второй - он создает новый массив и копирует старый.Если вы хотите избежать копирования, вместо этого вы можете использовать LinkedList, который просто добавляет новые ссылки в цепочку;но, конечно, тогда вы не получите быструю индексацию, которую обеспечивает один массив элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...