Junior
Kā strādāt ar kolekcijām Kotlin?
sobes.tech AI
Atbilde no AI
Kotlin kolekcijas ir objektu grupas. Tās var būt maināmas (mutable) vai nemaināmas (immutable).
Nemaināmas kolekcijas (Immutable):
- Saturs nevar tikt mainīts pēc to izveides.
- Tās ir drošas lasīšanai no vairākiem pavedieniem.
- Pamattipi:
List,Set,Map.
val skaitli: List<Int> = listOf(1, 2, 3) // Nemaināmas saraksts
// skaitli.add(4) // Kompilācijas kļūda: nemaināma kolekcija
Maināmas kolekcijas (Mutable):
- Saturs var tikt mainīts (pievienošana, dzēšana, elementu maiņa).
- Tās nav drošas vairākām pavedieniem pēc noklusējuma (prasa sinhronizāciju).
- Pamattipi:
MutableList,MutableSet,MutableMap.
val mainamiSkaitli: MutableList<Int> = mutableListOf(1, 2, 3) // Maināms saraksts
mainamiSkaitli.add(4) // Pievieno elementu
mainamiSkaitli.remove(2) // Dzēš elementu
Galvenie kolekciju tipi:
- List: Sakārtota kolekcija ar atkārtojumiem. Pieejas pēc indeksa.
val vardi: List<String> = listOf("Alice", "Bob", "Alice") println(vardi[0]) // "Alice" - Set: Neordinēta kolekcija bez atkārtojumiem. Elementi ir unikāli.
val unikaliSkaitli: Set<Int> = setOf(1, 2, 2, 3) println(unikaliSkaitli) // [1, 2, 3] - Map: Pāru kolekcija ar atslēgām un vērtībām. Katra atslēga ir unikāla.
val vecumi: Map<String, Int> = mapOf("Alice" to 30, "Bob" to 25) println(vecumi["Alice"]) // 30
Paplašinājumi kolekciju darbam (augstākā līmeņa funkcijas):
Kotlin nodrošina daudz jaudīgu paplašināšanas funkciju kolekciju apstrādei:
filter: Izveido jaunu kolekciju ar elementiem, kas atbilst predikātam.val pāraSkaitļi = skaitli.filter { it % 2 == 0 } // [2]map: Pārvērš katru elementu jaunos elementos, veidojot jaunu kolekciju.val kvadrātSkaitļi = skaitli.map { it * it } // [1, 4, 9]forEach: Veic darbību katram kolekcijas elementam.skaitli.forEach { println(it) } // Izvada 1, 2, 3 rindāsreduce: Apvieno visus kolekcijas elementus vienā vērtībā, izmantojot operāciju.val summa = skaitli.reduce { ak, i -> ak + i } // 6fold: Līdzīgsreduce, bet pieņem sākotnējo vērtību.val summaArSākotnējo = skaitli.fold(10) { ak, i -> ak + i } // 16 (10 + 1 + 2 + 3)sortedBy: Sakārto kolekciju pēc vērtības, kas iegūta no katra elementa.val sakārtotiVārdi = listOf("Charlie", "Alice", "Bob").sortedBy { it } // [Alice, Bob, Charlie]groupBy: Grupē elementus pēc atslēgas, kas iegūta no katra elementa.val grupētiSkaitļi = skaitli.groupBy { ja it % 2 == 0 then "patīk" else "nepatīk" } // {nepatīk=[1, 3], patīk=[2]}
Konversija starp kolekciju tipiem:
Var viegli konvertēt vienu kolekcijas tipu uz citu, kā arī starp maināmajām un nemaināmajām versijām:
val maināmsSaraksts: MutableList<Int> = listOf(1, 2, 3).toMutableList()
val nemaināmsSaraksts: List<Int> = mutableListOf(4, 5, 6).toList()
Kolekciju darbība Kotlin ievērojami atvieglo, pateicoties bagātīgajai standarta bibliotēkai un paplašināšanas funkcijām.