Расскажите про SparseArray

SparseArray сопоставляет целые числа с объектами, и, в отличие от обычного массива объектов, его индексы могут содержать пробелы. По сути это мапа, где ключами являются целые числа. SparseArray предназначен для более эффективного использования памяти, чем HashMap

SparseArray сохраняет свои пары ключ-значение в массивах, используя бинарный поиск для поиска ключей. Из-за этого он не предназначен для использования с большим количеством элементов. Как правило, он работает медленнее, чем хэш-мапа, поскольку для поиска требуется бинарный поиск, а для добавления и удаления требуется вставка и удаление элементов в массиве(что, как известно, медленные операции). Если требуется хранить до 100 элементов, то разница в производительности с хеш-мапой составляет менее 50%.

Чтобы повысить производительность, SparseArray использует оптимизацию при удалении ключей: вместо немедленного уплотнения своего массива он оставляет удаленную запись помеченной как удаленная. Таким образом массив не пересоздается каждый раз, что повышает производительность. Затем запись может быть повторно использована для того же ключа или уплотнена позже в единой сборке мусора всех удаленных записей.

Можно итерировать по элементам в SparseArray, используя методы keyAt(int) и valueAt(int). Перебор ключей с использованием keyAt(int) с возрастающими значениями индекса возвращает ключи в порядке возрастания. В случае valueAt(int) значения, соответствующие ключам, возвращаются в порядке возрастания.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *