В Android используются стандартные Java-коллекции из пакета java.util, а также специализированные Android-коллекции из пакета android.util и androidx.collection.
Стандартные Java-коллекции:
List:
ArrayList: Динамический массив, быстрый доступ по индексу, медленные вставки/удаления из середины.LinkedList: Двусвязный список, быстрые вставки/удаления в начале/конце, медленный доступ по индексу.Vector: Синхронизированная версия ArrayList, устарел, не рекомендуется использовать в многопоточности без необходимости.Set:
HashSet: На основе хеш-таблицы, не сохраняет порядок, быстрые операции добавления, удаления, поиска.LinkedHashSet: Сохраняет порядок добавления элементов, на основе хеш-таблицы и связанного списка.TreeSet: На основе красно-черного дерева, элементы хранятся в отсортированном порядке.Map:
HashMap: На основе хеш-таблицы, быстрые операции, не сохраняет порядок.LinkedHashMap: Сохраняет порядок добавления или доступа, на основе хеш-таблицы и связанного списка.TreeMap: На основе красно-черного дерева, ключи хранятся в отсортированном порядке.Queue:
PriorityQueue: Очередь с приоритетами.ArrayDeque: Двусторонняя очередь (дек).Специализированные Android-коллекции:
android.util.SparseArray: Отображение из int в Object, эффективнее HashMap<Integer, Object> для небольших коллекций.android.util.SparseBooleanArray: Отображение из int в boolean.android.util.SparseIntArray: Отображение из int в int.android.util.LongSparseArray: Отображение из long в Object.androidx.collection.ArrayMap: Реализация Map на основе двух массивов (ключей и значений), эффективнее HashMap для небольших коллекций.androidx.collection.ArraySet: Реализация Set на основе ArrayMap, эффективнее HashSet для небольших коллекций.Преимущества Android-коллекций (SparseArray, ArrayMap, ArraySet):
int вместо Integer).При выборе коллекции важно учитывать следующие факторы:
Пример использования SparseArray:
java