Назад к вопросам
Junior
226
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

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.