Java Guru
Какие есть преимущества у массива перед коллекцией? Для хранения ссылочных типов массив подходит хуже чем ArrayList. В основе реализации коллекции лежит такой же массив, поэтому эффективность будет той же самой. Однако, вам придется самостоятельно реализовывать логику управления хранилищем: например, увеличение массива при переполнении. А значит, будет больше шансов на ошибку. Если использовать массивы вместо коллекций для примитивов, можно получить выигрыш по эффективности. Коллекции – generic-типы, из-за этого простые значения хранятся в них в форме ссылочных типов-оберток. 1. Autoboxing выделяет память под новый объект, это дорогая операция; 2. Кроме данных, Object занимает дополнительную память под метаинформацию; 3. Ячейки массива лежат близко в оперативной памяти, это увеличивает шансы попадания в кэш процессора. С другой стороны, для массива всё так же нужно написать больше кода, он сложнее. Поэтому замена листов на массивы обычно считается излишней микрооптимизацией. Когда сэкономить всё-таки хочется, стоит выбрать одну из множества готовых библиотек не-generic реализаций коллекций. Списки примитивов можно найти в Eclipse Collections. В Android есть HashMap с целочисленными ключами – SparseArray.
Если у вас установлено приложение,
вы можете сразу перейти в канал