2010-01-11 3 views

ответ

13

A List<T> Как правило, предпочтительнее использовать ArrayList, так как это безопасная коллекция типов. Это означает, что вы получаете безопасность типа времени сборки. Кроме того, больше памяти эффективен для типов значений, потому что записи в качестве ArrayList будет в штучной упаковке, потому что его список Тип объекта:

например: Добавление целого числа в List<int> будет поместить данные в куче с использованием int[] в качестве базового структура данных. Добавление целого числа в ArrayList поместит данные в кучу, но поскольку базовая структура данных равна object[], данные должны быть помещены в квадрат, что означает, что указатель также должен быть сохранен в куче, которая требует выделения большего количества памяти.

Распределение памяти для ArrayList и List<T> : class (список ссылочных типов) точно такое же.

+0

@Charlie: добавление целого числа в «список » помещает данные * в кучу *, как элемент внутреннего массива списка. Разница между 'List ' и 'ArrayList'' int' является, как вы говорите, тем, что элементы не будут помещены в общий список. – LukeH

+0

@ Luke, спасибо, обновили. – Charlie

5

List<T> лучше, чем ArrayList:

Массив определенного типа (кроме Object) имеет более высокую производительность, чем ArrayList, так как элементы ArrayList имеют тип объекта и, следовательно, бокс и распаковка, как правило, возникают при сохранении или извлечении типа значения. Однако список может иметь сходную производительность для массива того же типа, если не требуется перераспределение; то есть, если начальная емкость является хорошим приближением максимального размера списка.

От ArrayList and List Collection Types

Смежные вопросы