Sobes.tech
Junior

Jakie typy kolekcji obsługuje Kotlin?

sobes.tech AI

Odpowiedź od AI

Kotlin obsługuje standardowe typy kolekcji z Java Collection Framework, a także oferuje własne wygodne rozszerzenia i interfejsy.

Główne interfejsy kolekcji w Kotlin:

  • Collection<out E>: Podstawowy interfejs dla niezmiennych kolekcji.
  • MutableCollection<E>: Interfejs dla kolekcji zmiennych.
  • List<out E>: Interfejs dla niezmiennych kolekcji z dostępem uporządkowanym po indeksie.
  • MutableList<E>: Interfejs dla zmiennych kolekcji z dostępem uporządkowanym po indeksie.
  • Set<out E>: Interfejs dla niezmiennych zbiorów unikalnych elementów bez określonego porządku.
  • MutableSet<E>: Interfejs dla zmiennych zbiorów unikalnych elementów bez określonego porządku.
  • Map<K, out V>: Interfejs dla niezmiennych kolekcji par "klucz-wartość".
  • MutableMap<K, V>: Interfejs dla zmiennych kolekcji par "klucz-wartość".

Główne implementacje kolekcji w bibliotece standardowej Kotlin (często używane funkcje-konstruktor):

  • ArrayList: Zmienna lista oparta na tablicy.
  • LinkedList: Zmienna lista oparta na liście powiązanej.
  • HashSet: Zmienny zbiór oparty na tablicy haszującej.
  • LinkedHashSet: Zmienny zbiór oparty na tablicy haszującej i liście powiązanej (zachowuje kolejność dodawania).
  • HashMap: Zmienna mapa oparta na tablicy haszującej.
  • LinkedHashMap: Zmienna mapa oparta na tablicy haszującej i liście powiązanej (zachowuje kolejność dodawania).

Przykłady tworzenia kolekcji:

// Nie zmienialna lista
val immutableList = listOf("a", "b", "c")

// Zmienialna lista
val mutableList = mutableListOf(1, 2, 3)

// Nie zmienialne zbior
val immutableSet = setOf("apple", "banana")

// Zmienialne zbior
val mutableSet = mutableSetOf(10, 20, 30)

// Nie zmienialna mapa
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Zmienialna mapa
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

Główna różnica między wersjami zmiennymi (Mutable*) i niezmiennymi (*) polega na tym, że kolekcje zmienne oferują metody do dodawania, usuwania i modyfikowania elementów, podczas gdy kolekcje niezmienne tego nie robią. Funkcje konstrukcyjne listOf, setOf, mapOf tworzą kolekcje niezmienne, a mutableListOf, mutableSetOf, mutableMapOf tworzą kolekcje zmienne.

Zalety korzystania z kolekcji w Kotlin:

  • Bezpieczeństwo: Nie zmienialne kolekcje domyślnie pomagają unikać niezamierzonych zmian.
  • Rozszerzenia: Kotlin oferuje wiele przydatnych funkcji rozszerzeń do pracy z kolekcjami (filter, map, forEach itd.).
  • Interoperacyjność: Łatwo pracować z istniejącym kodem Java korzystającym z kolekcji z Java Collection Framework.