Я уже несколько раз задавал себе вопрос, слишком большой массив int[] test = new int[1000]
или ArrayList ArrayList<int> test = new ArrayList<int>()
было бы лучше с точки зрения производительности. Какой из них я должен использовать?Слишком большой массив или массив?
ответ
Практически всегда лучше использовать контейнер, который автоматически адаптируется к размеру его содержимого, а не к контейнеру фиксированного размера, который вы принимаете . Предполагается, что всегда будет достаточно большим. Твердый код, такой как new int[1000]
, является красным флагом, который означает, что программа имеет произвольный предел в 1000 значений и, вероятно, окажется неудачной, если в итоге ей потребуется больше.
int[]
будет намного лучше, чем ArrayList<Integer>
с точки зрения памяти, потому что Integer
объекта потребует больше памяти, чем int
примитивных. Однако скорость доступа элементов очень сложно комментировать, потому что это зависит от JVM.
Метод добавления в ArrayList
будет выполнять медленнее, чем назначение на основе индекса. Суть в том, что если вы можете точно указать размер массива перед объявлением, чем использовать int[]
, используйте ArrayList<Integer>
.
Его вообще не сложно комментировать - массив будет быстрее во всех случаях. Доступ - простое добавление указателя. Версия arraylist будет иметь вызов функции, включая поиск виртуальной функции, а затем (скорее всего) тот же доступ к массиву. –
На самом деле массивы внутренне реализованы как объекты на Java, поэтому я думаю, что скорость доступа будет зависеть от JVM. 'Array.get (i)' может делать то же самое, что и 'array [i]' –
Извините, я должен был сделать вопрос более понятным. Я просто хотел знать, что было бы лучше использовать Array, слишком большой или ArrayList, если я не буду точно знать, насколько это необходимо. ArrayList
- 1. Распространение этикеток - массив слишком большой
- 2. Сегментация Fault C++ (массив слишком большой?)
- 3. Ошибка Python - ValueError: массив слишком большой
- 4. Массив, динамически выделяемый размером файла слишком большой
- 5. Обход «Массив слишком большой» ошибка python
- 6. Большой массив Mongodb или запрос
- 7. Отладка большой двойной массив
- 8. Большой массив указателей удаления
- 9. Инициализировать большой массив структур
- 10. Более эффективный: большой массив или множество скаляров
- 11. Скопировать большой массив или изменить индекс доступа
- 12. Один большой вид или массив меньших видов
- 13. Javascript большой массив зависает
- 14. Создайте слишком большой массив на C++, как его решить?
- 15. AJAX применяет слишком большой массив к переменной $ scope
- 16. Почему эта массив numpy слишком большой для загрузки?
- 17. Как работать с ValueError: массив является слишком большой ошибкой?
- 18. php json_encode большой массив
- 19. Создать большой массив Numpy
- 20. Ошибка сегментации Большой массив
- 21. PHP большой массив производительности
- 22. Looping через большой массив
- 23. Javascript большой массив производительности
- 24. PHP перестроить большой массив
- 25. Очень большой массив
- 26. Большой массив дисков для numpy
- 27. mallocing массив структур создает слишком малый массив
- 28. Как перевернуть слишком большой массив ArrayList <String>?
- 29. вина Сегментация когда я создаю немного слишком большой массив
- 30. C++ не может выделить слишком большой массив объектов на куче
Какой язык программирования? Java не имеет 'ArrayList' из-за его ужасных дженериков, а .NET не имеет общего «ArrayList» -сети общего типа «ArrayList» и общего «списка». –
rightfold
О, извините. Вы правы, это должно быть Integer. –