2014-03-16 4 views
1

Я уже несколько раз задавал себе вопрос, слишком большой массив int[] test = new int[1000] или ArrayList ArrayList<int> test = new ArrayList<int>() было бы лучше с точки зрения производительности. Какой из них я должен использовать?Слишком большой массив или массив?

+0

Какой язык программирования? Java не имеет 'ArrayList ' из-за его ужасных дженериков, а .NET не имеет общего «ArrayList» -сети общего типа «ArrayList» и общего «списка». – rightfold

+0

О, извините. Вы правы, это должно быть Integer. –

ответ

1

Практически всегда лучше использовать контейнер, который автоматически адаптируется к размеру его содержимого, а не к контейнеру фиксированного размера, который вы принимаете . Предполагается, что всегда будет достаточно большим. Твердый код, такой как new int[1000], является красным флагом, который означает, что программа имеет произвольный предел в 1000 значений и, вероятно, окажется неудачной, если в итоге ей потребуется больше.

1

int[] будет намного лучше, чем ArrayList<Integer> с точки зрения памяти, потому что Integer объекта потребует больше памяти, чем int примитивных. Однако скорость доступа элементов очень сложно комментировать, потому что это зависит от JVM.

Метод добавления в ArrayList будет выполнять медленнее, чем назначение на основе индекса. Суть в том, что если вы можете точно указать размер массива перед объявлением, чем использовать int[], используйте ArrayList<Integer>.

+0

Его вообще не сложно комментировать - массив будет быстрее во всех случаях. Доступ - простое добавление указателя. Версия arraylist будет иметь вызов функции, включая поиск виртуальной функции, а затем (скорее всего) тот же доступ к массиву. –

+0

На самом деле массивы внутренне реализованы как объекты на Java, поэтому я думаю, что скорость доступа будет зависеть от JVM. 'Array.get (i)' может делать то же самое, что и 'array [i]' –

+0

Извините, я должен был сделать вопрос более понятным. Я просто хотел знать, что было бы лучше использовать Array, слишком большой или ArrayList, если я не буду точно знать, насколько это необходимо. ArrayList был просто примером, он также мог бы быть ArrayList /MyTestObject []. –

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