Sobes.tech
Junior

Kokius kolekcijų tipus palaiko Kotlin?

sobes.tech AI

Atsakymas iš AI

Kotlin palaiko standartinius Java Collection Framework tipų rinkinius ir taip pat siūlo savo patogius išplėtinius ir sąsajas.

Pagrindiniai kolekcijų sąsajos Kotlin:

  • Collection<out E>: Pagrindinė nekeičiama kolekcija.
  • MutableCollection<E>: Keičiamų kolekcijų sąsaja.
  • List<out E>: Pagrindinė nekeičiama kolekcija su tvarkingai prieinama pagal indeksą.
  • MutableList<E>: Keičiamų kolekcijų sąsaja su tvarkingai prieinama pagal indeksą.
  • Set<out E>: Nekeičiama unikalių elementų kolekcija be nustatyto tvarkos.
  • MutableSet<E>: Keičiamų unikalių elementų kolekcija be nustatytos tvarkos.
  • Map<K, out V>: Nekeičiama porų "raktas-reikšmė" kolekcija.
  • MutableMap<K, V>: Keičiamų porų "raktas-reikšmė" kolekcija.

Pagrindinės kolekcijų įgyvendinimai Kotlin standartinėje bibliotekoje (dažnai naudojamos statybos funkcijos):

  • ArrayList: Keičiamas sąrašas, pagrįstas masyvu.
  • LinkedList: Keičiamas sąrašas, pagrįstas sujungtu sąrašu.
  • HashSet: Keičiamas rinkinys, pagrįstas maišos lentelės struktūra.
  • LinkedHashSet: Keičiamas rinkinys, pagrįstas maišos lentelės ir sujungtu sąrašu (saugo pridėjimo tvarką).
  • HashMap: Keičiamas žemėlapis, pagrįstas maišos lentelės struktūra.
  • LinkedHashMap: Keičiamas žemėlapis, pagrįstas maišos lentelės ir sujungtu sąrašu (saugo pridėjimo tvarką).

Pavyzdžiai kolekcijų kūrimui:

// Nekeičiama sąrašas
val immutableList = listOf("a", "b", "c")

// Keičiamas sąrašas
val mutableList = mutableListOf(1, 2, 3)

// Nekeičiama kolekcija
val immutableSet = setOf("apple", "banana")

// Keičiamas kolekcija
val mutableSet = mutableSetOf(10, 20, 30)

// Nekeičiama žemėlapis
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Keičiamas žemėlapis
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

Svarbiausias skirtumas tarp keičiamų (Mutable*) ir nekeičiamių (*) versijų yra tas, kad keičiamose kolekcijose yra metodai pridėti, pašalinti ir keisti elementus, o nekeičiamos kolekcijos to nedaro. Konstrukcijos funkcijos listOf, setOf, mapOf kuria nekeičiamos kolekcijas, o mutableListOf, mutableSetOf, mutableMapOf — keičiamas.

Kolekcijų naudojimo privalumai:

  • Saugumas: nekeičiamos kolekcijos padeda išvengti netikėtų pakeitimų.
  • Išplėtimas: Kotlin siūlo daugybę naudingų išplėtimo funkcijų darbui su kolekcijomis (filter, map, forEach ir kt.).
  • Interoperabilumas: lengva dirbti su esamu Java kodu, naudojančiu Java Collection Framework kolekcijas.