Какую реализацию List стоит использовать в Adapter у RecyclerView

«Какую реализацию List стоит использовать в Adapter у RecyclerView» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для RecyclerView.Adapter лучше использовать ArrayList, так как он обеспечивает быстрый доступ по индексу (O(1)), что важно для getItemCount(), getItemViewType() и других методов адаптера.

Почему не LinkedList?

  • Доступ по индексу в LinkedList медленный (O(n)), что критично для адаптеров.
  • ArrayList оптимизирован для итерации и кэш-дружественен.

Пример:

private val items = ArrayList<Item>() // Лучший выбор

fun updateData(newItems: List<Item>) {
    items.clear()
    items.addAll(newItems)
    notifyDataSetChanged()
}

Важно:

  • Для больших списков используйте DiffUtil с ArrayList для эффективных обновлений.
  • Избегайте частых копирований (toList(), toMutableList()), если данные не меняются.