Ответ
Коллекции в Java — это структуры данных, которые хранят группы объектов и предоставляют операции для их обработки. В Android (Kotlin/Java) основные интерфейсы:
- List — упорядоченная коллекция с дубликатами (
ArrayList,LinkedList). - Set — коллекция без дубликатов (
HashSet,LinkedHashSet). - Map — пары ключ-значение (
HashMap,LinkedHashMap).
Пример:
val list = listOf("a", "b", "a") // List: [a, b, a]
val set = setOf("a", "b", "a") // Set: [a, b]
val map = mapOf("key1" to 1, "key2" to 2) // Map: {key1=1, key2=2}
Особенности:
- Коллекции в Kotlin неизменяемы по умолчанию. Для изменяемых версий используйте
mutableListOf(),mutableSetOf(). - В Android предпочтительнее использовать
ArrayListиHashMapиз-за производительности.
Ответ 18+ 🔞
Давай разберём эту тему, а то у меня уже волнение ебать, как люди с коллекциями путаются. Представь, что коллекции — это такие разные способы таскать свои шмотки: можно в аккуратный чемодан с полочками, можно в мешок навалить, а можно по карманам раскидать, чтобы по ключу быстро найти.
Вот основные типы, без которых нихуя не сделаешь:
- List (Список) — это как очередь в поликлинику. Все стоят по порядку, и если один Вася Петров пришёл, а потом ещё один Вася Петров пришёл — так и будут оба стоять, дубликаты разрешены. Внутри это обычно
ArrayList(быстрый доступ по номеру) илиLinkedList(удобно в середину вставлять). - Set (Множество) — а это уже как список гостей на закрытую тусовку. Одно лицо — один пропуск. Дважды одного и того же пидараса шерстяного не внесёшь. Порядок часто похуй (
HashSet), но можно и сохранить (LinkedHashSet). - Map (Словарь/Карта) — это вообще хитрая жопа. Представь сейф с ящичками. У каждого ящичка есть уникальный ключ (например, "любимая тёща"), а внутри лежит значение (например, "яд"). По ключу мгновенно находишь, что тебе нужно. Классика —
HashMap.
Пример кода, чтобы вообще ни у кого сомнений не осталось:
val list = listOf("a", "b", "a") // List: [a, b, a] - две буковки 'a', и всем похуй
val set = setOf("a", "b", "a") // Set: [a, b] - вторую 'a' выкинули нахуй, она лишняя
val map = mapOf("key1" to 1, "key2" to 2) // Map: {key1=1, key2=2} - открыл ящичек "key1", а там единичка
Важный момент, который все проёбывают:
В Kotlin по умолчанию коллекции неизменяемые. Создал такой listOf — и всё, ты его, как мамину вазу, только смотреть можно. Хочешь добавлять/удалять? Используй mutableListOf(), mutableSetOf(). Это как чемодан на молнии против заварного чемодана с висячим замком.
Для Андроида, где каждый миллисекунд на счету, чаще всего берут ArrayList и HashMap. Они проверенные, быстрые, жрут память предсказуемо. LinkedList — это уже для особых извращений, когда надо часто в середину списка ебашить. В общем, выбирай инструмент по задаче, а не потому что слово красивое.