Как сократить размер моего ArrayList? - PullRequest
0 голосов
/ 27 января 2011

Допустим, мой ArrayList получил 20 элементов. Что ж, когда-нибудь во время выполнения я захочу, чтобы в нем было только 10 элементов, поэтому остальные 10 индексов (от 9 до 19) вообще не существуют. Как мне это сделать?

Ответы [ 4 ]

3 голосов
/ 27 января 2011

Почему вы вообще используете неуниверсальные коллекции?Вместо этого используйте List<T>.И вы можете использовать метод Remove() на нем.

2 голосов
/ 28 января 2011

Поскольку вы работаете с ArrayLists, а не с Arrays, просто используйте ArrayList.Remove () для одной детали и ArrayList.RemoveRange (x, list.Count-x) для диапазона.

1 голос
/ 27 января 2011

Если вы хотите избежать использования пространства памяти для элементов, которых нет, вы можете попробовать использовать метод TrimToSize:

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.trimtosize.aspx

Это минимизирует накладные расходы массива, ограничивая емкость текущими предметами.

Если они уже существуют, вам нужно удалить их, а затем вызвать этот метод.

Я не уверен, что именно вы ищете, так что больше деталей было бы здорово.

0 голосов
/ 27 января 2011

Если вы просто хотите удалить элементы без изменения емкости, вы можете использовать ArrayList.RemoveRange:

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.removerange.aspx

arrayList.RemoveRange (10, list.Count-10)

Этот метод может использоваться с любым другим допустимым диапазоном, если вы, например, хотите удалить первые десять элементов.

...