Sobes.tech
Back to questions
Junior
330
questionbank

Какие типы коллекций поддерживает Kotlin?

Sobes Copilot

Get answers in real time

Answer from AI

sobes.tech AI

Kotlin поддерживает стандартные типы коллекций из Java Collection Framework, а также предоставляет свои удобные расширения и интерфейсы.

Основные интерфейсы коллекций в Kotlin:

  • Collection<out E>: Базовый интерфейс для неизменяемой коллекции.
  • MutableCollection<E>: Интерфейс для изменяемой коллекции.
  • List<out E>: Интерфейс для неизменяемой коллекции с упорядоченным доступом по индексу.
  • MutableList<E>: Интерфейс для изменяемой коллекции с упорядоченным доступом по индексу.
  • Set<out E>: Интерфейс для неизменяемой коллекции уникальных элементов без определенного порядка.
  • MutableSet<E>: Интерфейс для изменяемой коллекции уникальных элементов без определенного порядка.
  • Map<K, out V>: Интерфейс для неизменяемой коллекции пар "ключ-значение".
  • MutableMap<K, V>: Интерфейс для изменяемой коллекции пар "ключ-значение".

Основные реализации коллекций в стандартной библиотеке Kotlin (часто используются функции-строители):

  • ArrayList: Изменяемый список, основанный на массиве.
  • LinkedList: Изменяемый список, основанный на связанном списке.
  • HashSet: Изменяемое множество, основанное на хеш-таблице.
  • LinkedHashSet: Изменяемое множество, основанное на хеш-таблице и связанном списке (сохраняет порядок добавления).
  • HashMap: Изменяемая карта, основанная на хеш-таблице.
  • LinkedHashMap: Изменяемая карта, основанная на хеш-таблице и связанном списке (сохраняет порядок добавления).

Примеры создания коллекций:

// Неизменяемый список
val immutableList = listOf("a", "b", "c")

// Изменяемый список
val mutableList = mutableListOf(1, 2, 3)

// Неизменяемое множество
val immutableSet = setOf("apple", "banana")

// Изменяемое множество
val mutableSet = mutableSetOf(10, 20, 30)

// Неизменяемая карта
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Изменяемая карта
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

Ключевое отличие между изменяемыми (Mutable*) и неизменяемыми (*) версиями заключается в том, что изменяемые коллекции предоставляют методы для добавления, удаления и изменения элементов, в то время как неизменяемые коллекции этого не делают. Функции-строители listOf, setOf, mapOf создают неизменяемые коллекции, а mutableListOf, mutableSetOf, mutableMapOf - изменяемые.

Преимущества использования коллекций Kotlin:

  • Безопасность: Неизменяемые коллекции по умолчанию помогают избежать непредвиденных изменений.
  • Расширения: Kotlin предоставляет множество полезных расширяющих функций для работы с коллекциями (filter, map, forEach, и т.д.).
  • Интероперабельность: Легко работать с существующим Java-кодом, использующим коллекции из Java Collection Framework.