Что такое коллекция

Ответ

Коллекции в 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 — это уже для особых извращений, когда надо часто в середину списка ебашить. В общем, выбирай инструмент по задаче, а не потому что слово красивое.