|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2016, 18:55 | #1 |
Форумчанин
Регистрация: 29.06.2013
Сообщений: 132
|
Непонянка со свойствами Capacity и Count в ArrayList ?
У ArrayList имеются 2 свойства Count и Capacity.
Count - возвращает число элементов, содержащихся в списке ArrayList. Capacity - возвращает или задаёт число элементов, которое может содержать список ArrayList. В простом примере: Код:
Как я понял, в данном списке может содержаться 4 элемента, т.к. Capacity =4, но, на данный момент присутствует 3 элемента т.к. Count = 3. Почему так? Ведь явно количество элементов не задано в коде? |
01.04.2016, 19:01 | #2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
|
|
01.04.2016, 19:02 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Capacity — под сколько памяти выделено, Count — сколько добавлено (через Add и т.п.).
Когда надо будет (при добавлении с Count == Capacity) оно выделит больше памяти и увеличит Capacity, например в 2 раза. В конструкторе можно задать начальное Capacity (если известно сколько надо). https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
01.04.2016, 19:47 | #4 | |
Форумчанин
Регистрация: 29.06.2013
Сообщений: 132
|
Цитата:
Ведь если изменить поле, где добавляем элементы, то получаются совсем разные результаты возможной вместимости, хотя количество то понятно... оно такое, сколько добавили. Вот 2 варианта: 1. Добавлено 4 элемента Код:
Замечу, что значение Capacity такое же как и в том случае, как и первый раз. 2. Добавлено 5 элементов Код:
Замечу, что значение Capacity резко увеличилось до 8. Хотя предыдущий раз, когда добавляли на 1 элемент меньше, значение было 4, а тут 8 ! Получается, данное свойство меняется как-то нелинейно? Я чего спрашиваю... Думал, что добавили элемент, количество элементов равно x, тогда Capacity = x + 1. А тут как-то не так. |
|
01.04.2016, 19:55 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Перевыделять память при каждом добавлении не эффективно.
http://referencesource.microsoft.com...f2bbf8d237742e Код:
Код:
Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 01.04.2016 в 19:57. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
управление свойствами книги | maxvip | Microsoft Office Excel | 1 | 26.11.2014 11:46 |
Чем отличается ListBox.Count от ListBox.Items.Count | bakanaev | Общие вопросы Delphi | 5 | 16.08.2012 12:35 |
TObjectList.Capacity - принцип работы | kefir | Общие вопросы Delphi | 1 | 02.05.2011 17:03 |
Кнопка с её свойствами | Golovastik | HTML и CSS | 7 | 16.07.2010 19:30 |
Ошибка: The DecisionCube Capacity is low | Tanya2008 | Общие вопросы Delphi | 1 | 30.04.2009 15:28 |