Когда нужно применять List

Ответ

Используй List (или конкретные реализации типа ArrayList, LinkedList) когда:

  1. Нужно хранить упорядоченную коллекцию с возможностью дубликатов.
  2. Требуется частый доступ по индексу (get(index)).
  3. Часто добавляешь/удаляешь элементы в конец (ArrayList лучше) или середину (LinkedList предпочтительнее).

Пример:

val names: List<String> = listOf("Alice", "Bob") // неизменяемый
val mutableNames = mutableListOf("Charlie") // изменяемый
mutableNames.add("Diana") // добавление
println(mutableNames[1]) // доступ по индексу

Для уникальных элементов используй Set, для пар ключ-значение — Map.

Ответ 18+ 🔞

Слушай, вот реально, какого хуя все путают эти коллекции? Давай по-простому, без заумных терминов.

Если тебе нужен просто список, как та шпаргалка в телефоне, где порядок важен и одно и то же имя может встретиться дважды — это List. Представь, ты пишешь список покупок: «хлеб, молоко, хлеб» — и тебе похуй, что «хлеб» повторяется. Вот это оно.

Когда его юзать? Да почти всегда, если не знаешь, с чего начать. Особенно если:

  1. Тебе важен порядок (первый, второй, третий...). Не как в мешке, а именно по очереди.
  2. Ты часто лезешь за элементом по его номеру (get(3)). ArrayList для этого — просто пиздец как быстр, он сразу прыгает куда надо.
  3. Ты в основном добавляешь в конец. ArrayList и тут молодец.
  4. Если же ты такой хитрожопый и постоянно вставляешь или выковыриваешь что-то из самой середины списка — тогда посмотри в сторону LinkedList. Он там шустрее, хотя в остальном — обычная мартышлюшка.

Вот, смотри, как это выглядит, чтоб совсем ни хуя себе не осталось:

// Это как забитый гвоздями список — не добавишь, не убавишь
val readOnlyList: List<String> = listOf("Алиса", "Боб")
// readOnlyList.add("Чарли") // А вот так НЕЛЬЗЯ! Вылетит, ебать, с ошибкой

// А это твой пластилин — лепи что хочешь
val shoppingList = mutableListOf("Хлеб", "Молоко")
shoppingList.add("Пиво") // Добавили в конец — легко
shoppingList.add(1, "Сыр") // Впихнули сыр на второе место, всё сдвинулось
println(shoppingList[2]) // Достали по номеру: "Молоко"

А теперь, внимание, хуй с горы: если тебе нужны только уникальные штуки (как набор уникальных ID), где порядок похуй — это Set. А если пары «ключ — значение», как в словаре — это Map. Но это уже совсем другая история, ебушки-воробушки.

Короче, для начала бери MutableList (это ArrayList под капотом) и не парься. В 95% случаев — то, что надо.