Эффективность, в данном случае, не имеет значения, поскольку эти двое делают совершенно разные вещи.
Я думаю, вы понимаете, что ваш ArrayList
пример повторяет все элементы массива-списка.
Что вы не понимаете, так это то, что ваш SparseIntArray
пример не выполняет итерацию по всем элементам массива sparse-integer, потому что ключи массива sparse-integer делают не диапазон от нуля до размера-массива-минус один. Скорее, его ключи являются произвольными целыми числами. Массив разреженных целочисленных значений имеет столько же общего интерфейса, с HashMap<Integer, Integer>
, чем с ArrayList<Integer>
.
(Кстати, это относится к общему правилу разработки программного обеспечения: лучше, чтобы ваш код был правильный , чем эффективный . Вы всегда можете взять правильный, чистый кодируйте и находите способы улучшить его производительность, но очень сложно быстро взять код с ошибками и найти способы исправить его.)