Sobes.tech
Junior

Milliseid kogumistiile toetab Kotlin?

sobes.tech AI

Vastus AI-lt

Kotlin toetab Java Collection Frameworki standardseid tüüpe ning pakub ka oma mugavaid laiendusi ja liideseid.

Kotlinis peamised kogumite liidesed:

  • Collection<out E>: Põhiline liides muutumatutele kogumitele.
  • MutableCollection<E>: Muudetavate kogumite liides.
  • List<out E>: Muutumatu kogumi liides järjega juurdepääsuga indeksi järgi.
  • MutableList<E>: Muudetava kogumi liides järjega juurdepääsuga indeksi järgi.
  • Set<out E>: Muutumatu kogumi liides unikaalsete elementidega ilma kindla järjekorrata.
  • MutableSet<E>: Muudetava kogumi liides unikaalsete elementidega ilma kindla järjekorrata.
  • Map<K, out V>: Muutumatu "võti-väärtus" paaride kogum.
  • MutableMap<K, V>: Muudetava "võti-väärtus" paaride kogum.

Kogumite peamised teostused Kotlinis (tihti kasutatavad konstruktsioonifunktsioonid):

  • ArrayList: Muudetav nimekiri, mis põhineb massiivil.
  • LinkedList: Muudetav nimekiri, mis põhineb ühendatud nimekirjal.
  • HashSet: Muudetav hulk, mis põhineb hajemaatriksil.
  • LinkedHashSet: Muudetav hulk, mis põhineb hajemaatriksil ja ühendatud nimekirjal (säilitab lisamise järjekorra).
  • HashMap: Muudetav kaard, mis põhineb hajemaatriksil.
  • LinkedHashMap: Muudetav kaard, mis põhineb hajemaatriksil ja ühendatud nimekirjal (säilitab lisamise järjekorra).

Näited kogumite loomise kohta:

// Muutumatu nimekiri
val immutableList = listOf("a", "b", "c")

// Muudetav nimekiri
val mutableList = mutableListOf(1, 2, 3)

// Muutumatu hulk
val immutableSet = setOf("apple", "banana")

// Muudetav hulk
val mutableSet = mutableSetOf(10, 20, 30)

// Muutumatu kaart
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Muudetav kaart
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

Peamine erinevus muudetavate (Mutable*) ja muutumatute (*) versioonide vahel on see, et muudetavad kogumid pakuvad meetodeid elementide lisamiseks, eemaldamiseks ja muutmiseks, samas kui muutumatud kogumid seda teha ei võimalda. Konstruktsioonifunktsioonid listOf, setOf, mapOf loovad muutumatuid kogumeid ning mutableListOf, mutableSetOf, mutableMapOf — muudetavaid.

Kogumite kasutamise eelised:

  • Turvalisus: muutumatud kogumid aitavad vältida ootamatuid muudatusi.
  • Laiendused: Kotlin pakub palju kasulikke laiendusfunktsioone kogumitega töötamiseks (filter, map, forEach ja teised).
  • Interoperabiliteet: lihtne töötada olemasoleva Java-koodiga, mis kasutab Java Collection Frameworki kogumeid.