Ответ
В Android разработке часто используются:
- List/ArrayList - для хранения упорядоченных коллекций:
val names = listOf("Alice", "Bob", "Charlie")
- Map/HashMap - для пар ключ-значение:
val userMap = mapOf("id" to 123, "name" to "John")
- Set/HashSet - для уникальных элементов:
val uniqueNumbers = setOf(1, 2, 3, 3) // Будет [1, 2, 3]
- Pair/Triple - для временных группировок данных:
val coordinates = Pair(51.5074, -0.1278)
- Array - для фиксированного размера:
val fixedArray = arrayOf(1, 2, 3)
- Mutable коллекции - когда нужна возможность изменения:
val mutableList = mutableListOf<String>()
mutableList.add("New item")
Также часто работаю с LiveData, Flow и другими реактивными структурами для UI.
Ответ 18+ 🔞
А, ну это ж классика, ебать мои старые костыли! Сидишь такой, пишешь приложение, а тут бац — и надо данные куда-то пихать. Как в жизни: то ли в карман, то ли в сумку, то ли просто в кулаке зажать. Вот и в андроиде так же, только вместо карманов — коллекции.
Ну, первое, что всем в зубы тычут, это List или ArrayList. Представь себе очередь в столовую — все стоят по порядку, у каждого свой номерок. Вот и тут так же: положил данные подряд, а потом можешь по индексу достать. Только смотри, не перепутай, а то вместо "Алисы" получишь "Боба", и будет тебе хиросима и нигерсраки.
val names = listOf("Alice", "Bob", "Charlie")
Дальше идёт Map, она же HashMap. Это уже не очередь, а типа шкафчик с ключами. Захотел взять "name" — открываешь ящичек с биркой "name" и достаёшь "John". Удобно, ёпта, когда не помнишь порядок, но помнишь название.
val userMap = mapOf("id" to 123, "name" to "John")
Потом Set, он же HashSet. Это вообще отдельная песня. Ты ему суёшь числа: 1, 2, 3, 3, а он тебе, такой хитрая жопа, возвращает [1, 2, 3]. Вторую тройку выкинул нахуй, потому что уникальность. Как будто в клуб пытаются пройти два одинаковых чувака в одной кофте — охрана одного развернёт.
val uniqueNumbers = setOf(1, 2, 3, 3) // Будет [1, 2, 3]
Pair и Triple — это вообще как временные связки. Захотел быстро сгруппировать широту и долготу, не заморачиваясь с созданием целого data class? Пожалуйста, вот тебе Pair(51.5074, -0.1278). Координаты в карман и побежал. Удобно, но если данных больше трёх — тут уже терпения ноль ебать, пора нормальную структуру создавать.
Array — это старый дедок, с фиксированным размером. Как квартира в хрущёвке: места ровно столько, сколько есть, ни больше, ни меньше. Создал на три элемента — сиди и радуйся. Попробуй четвёртого впихнуть — тебе же и прилетит.
val fixedArray = arrayOf(1, 2, 3)
И, конечно, куда же без Mutable коллекций. Это когда обычный лист — это как музей: посмотреть можно, а трогать низя. А mutable — это как свой гараж: хочу — велосипед поставлю, хочу — старый холодильник. Полная свобода, но и ответственность.
val mutableList = mutableListOf<String>()
mutableList.add("New item")
А ещё, чувак, вся эта байда часто работает в паре с LiveData и Flow. Это уже такие штуки, которые не просто данные хранят, а ещё и уведомляют: "Эй, слушай сюда, данные-то поменялись, обновляй экран, давай-давай!". Без них сейчас ни одно уважающее себя UI не обходится, иначе получится статичная картинка, как будто на дворе 2002-й год.