Sobes.tech
Junior

Koje tipove kolekcija podržava Kotlin?

sobes.tech АИ

Одговор од АИ

Kotlin podržava standardne tipove kolekcija iz Java Collection Framework, kao i pruža svoje zgodne proširenja i interfejse.

Glavni interfejsi kolekcija u Kotlin:

  • Collection<out E>: Osnovni interfejs za nepromenljive kolekcije.
  • MutableCollection<E>: Interfejs za promenljive kolekcije.
  • List<out E>: Interfejs za nepromenljive kolekcije sa uređenim pristupom po indeksu.
  • MutableList<E>: Interfejs za promenljive kolekcije sa uređenim pristupom po indeksu.
  • Set<out E>: Interfejs za nepromenljive kolekcije jedinstvenih elemenata bez određenog reda.
  • MutableSet<E>: Interfejs za promenljive kolekcije jedinstvenih elemenata bez određenog reda.
  • Map<K, out V>: Interfejs za nepromenljive kolekcije parova "ključ-vrednost".
  • MutableMap<K, V>: Interfejs za promenljive kolekcije parova "ključ-vrednost".

Glavne implementacije kolekcija u standardnoj biblioteci Kotlin (često korišćene funkcije-graditelji):

  • ArrayList: Promenljiva lista zasnovana na nizu.
  • LinkedList: Promenljiva lista zasnovana na povezanoj listi.
  • HashSet: Promenljivo skupo, zasnovano na hash tabeli.
  • LinkedHashSet: Promenljivo skupo, zasnovano na hash tabeli i povezanoj listi (čuva red dodavanja).
  • HashMap: Promenljiva mapa zasnovana na hash tabeli.
  • LinkedHashMap: Promenljiva mapa zasnovana na hash tabeli i povezanoj listi (čuva red dodavanja).

Primeri kreiranja kolekcija:

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

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

// Nepromenljivo skupo
val immutableSet = setOf("apple", "banana")

// Promenljivo skupo
val mutableSet = mutableSetOf(10, 20, 30)

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

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

Ključna razlika između promenljivih (Mutable*) i nepromenljivih (*) verzija je u tome što promenljive kolekcije pružaju metode za dodavanje, uklanjanje i promenu elemenata, dok nepromenljive kolekcije to ne čine. Funkcije-graditelji listOf, setOf, mapOf kreiraju nepromenljive kolekcije, a mutableListOf, mutableSetOf, mutableMapOf su promenljive.

Prednosti korišćenja kolekcija u Kotlinu:

  • Bezbednost: Nepromenljive kolekcije pomažu da se izbegnu nepredviđene promene.
  • Proširenja: Kotlin pruža mnogo korisnih proširenih funkcija za rad sa kolekcijama (filter, map, forEach i dr.).
  • Interoperabilnost: Lako raditi sa postojećim Java kodom koji koristi kolekcije iz Java Collection Frameworka.