ArrayList <myclass> vs MyClass [26]?

-3

Мне нужно сохранить 26 объектов в массиве. может быть меньше, но не больше. Будет ли массивList занимать больше места, чем массив из 26 объектов?

спросил(а) 2011-07-22T20:50:00+04:00 8 лет, 4 месяца назад
2
2 ответа
65

Вы задаете неправильный вопрос. Может ли ArrayList занимать немного больше места, чем простой старый массив, кроме того.

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

Если массив будет содержать только 26 объектов на протяжении всего его жизненного цикла, вы должны, вероятно, придерживаться простого старого массива: myArray[26].

Но если есть вероятность, что вам необходимо динамически изменять размер массива, изменив количество содержащихся в нем элементов, то вам обязательно нужно пойти с реализацией ArrayList, независимо от того, может ли это заняться немного больше места. Гибкость гораздо важнее в этом случае, значительно перевешивая любые затраты, которые могут быть потенциально связаны с этим.

Другой случай, когда вы хотите использовать ArrayList вместо простого массива, - это когда вам нужен класс, реализующий интерфейс IList.

Но имейте в виду, что класс ArrayList вероятно, должен быть устаревшим в более поздних версиях.NET Framework. Пространство имен System.Collections.Generic предоставляет кучу общих классов коллекций, которые намного более эффективны и предпочтительнее для ArrayList. В этом случае вы, вероятно, захотите использовать класс List<T>, где T - класс объектов, которые вы хотите сохранить в указанном массиве.

ответил(а) 2011-07-22T20:56:00+04:00 8 лет, 4 месяца назад
32

Это не может быть меньше... Я думаю, что это может занять больше, в зависимости от того, как они перенаправляют. Чтобы уточнить, если вы храните менее 26 элементов, списки массивов могут быть лучше... Если вы сохраняете 26, списки массивов не могут быть лучше и, вероятно, хуже.

ответил(а) 2011-07-22T20:52:00+04:00 8 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема