Ответ
Используй List (или конкретные реализации типа ArrayList, LinkedList) когда:
- Нужно хранить упорядоченную коллекцию с возможностью дубликатов.
- Требуется частый доступ по индексу (
get(index)). - Часто добавляешь/удаляешь элементы в конец (
ArrayListлучше) или середину (LinkedListпредпочтительнее).
Пример:
val names: List<String> = listOf("Alice", "Bob") // неизменяемый
val mutableNames = mutableListOf("Charlie") // изменяемый
mutableNames.add("Diana") // добавление
println(mutableNames[1]) // доступ по индексу
Для уникальных элементов используй Set, для пар ключ-значение — Map.
Ответ 18+ 🔞
Слушай, вот реально, какого хуя все путают эти коллекции? Давай по-простому, без заумных терминов.
Если тебе нужен просто список, как та шпаргалка в телефоне, где порядок важен и одно и то же имя может встретиться дважды — это List. Представь, ты пишешь список покупок: «хлеб, молоко, хлеб» — и тебе похуй, что «хлеб» повторяется. Вот это оно.
Когда его юзать? Да почти всегда, если не знаешь, с чего начать. Особенно если:
- Тебе важен порядок (первый, второй, третий...). Не как в мешке, а именно по очереди.
- Ты часто лезешь за элементом по его номеру (
get(3)).ArrayListдля этого — просто пиздец как быстр, он сразу прыгает куда надо. - Ты в основном добавляешь в конец.
ArrayListи тут молодец. - Если же ты такой хитрожопый и постоянно вставляешь или выковыриваешь что-то из самой середины списка — тогда посмотри в сторону
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% случаев — то, что надо.