Junior
Kuidas töötada Kotlinis kogumitega?
sobes.tech AI
Vastus AI-lt
Kotlin kogumid on objektide rühmad. Nad võivad olla muudetavad (mutable) või muutumatud (immutable).
Muutumatud kogumid (Immutable):
- Sisu ei saa pärast loomist muuta.
- Nad on loetavuse osas turvalised mitme niidi jaoks.
- Põhitüübid:
List,Set,Map.
val numbers: List<Int> = listOf(1, 2, 3) // Muutumatu nimekiri
// numbers.add(4) // Kompileerimisviga: muutumatu kogum
Muutuvad kogumid (Mutable):
- Sisu võib muutuda (lisamine, eemaldamine, elementide muutmine).
- Nad ei ole vaikimisi niiditurvalised (vajab käsitsi sünkroniseerimist).
- Põhitüübid:
MutableList,MutableSet,MutableMap.
val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3) // Muutuv nimekiri
mutableNumbers.add(4) // Element lisamine
mutableNumbers.remove(2) // Elementi eemaldamine
Peamised kogumitüübid:
- List: Järjendiline kogum, mis võimaldab duplikaate. Jõuab indeksi järgi.
val names: List<String> = listOf("Alice", "Bob", "Alice") println(names[0]) // "Alice" - Set: Järjendiline kogum, mis ei võimalda duplikaate. Elementideks on unikaalsed.
val uniqueNumbers: Set<Int> = setOf(1, 2, 2, 3) println(uniqueNumbers) // [1, 2, 3] - Map: Paari võtme-väärtuse kogum. Iga võti on unikaalne.
val ages: Map<String, Int> = mapOf("Alice" to 30, "Bob" to 25) println(ages["Alice"]) // 30
Kogumite töötluse laiendused (kõrgema taseme funktsioonid):
Kotlin pakub palju võimsaid laiendusfunktsioone kogumite töötlemiseks:
filter: Loob uue kogumi, mis sisaldab ainult tingimusele vastavaid elemente.val evenNumbers = numbers.filter { it % 2 == 0 } // [2]map: Muudab iga elemendi uueks elemendiks, luues uue kogumi.val squaredNumbers = numbers.map { it * it } // [1, 4, 9]forEach: Teeb tegevuse iga elemendi jaoks.numbers.forEach { println(it) } // Väljund 1, 2, 3 rida kaupareduce: Ühendab kõik elemendid üheks väärtuseks, rakendades operatsiooni.val sum = numbers.reduce { acc, i -> acc + i } // 6fold: Sarnanereduce-ga, kuid võtab algväärtuse.val sumWithInitial = numbers.fold(10) { acc, i -> acc + i } // 16 (10 + 1 + 2 + 3)sortedBy: Sorteerib kogumi väärtuse järgi, mis saadakse iga elemendi juures.val sortedNames = listOf("Charlie", "Alice", "Bob").sortedBy { it } // [Alice, Bob, Charlie]groupBy: Rühmitab elemendid võtme järgi, mis saadakse iga elemendi juures.val groupedNumbers = numbers.groupBy { if (it % 2 == 0) "even" else "odd" } // {odd=[1, 3], even=[2]}
Konversioonid kogumitüüpide vahel:
Võib hõlpsasti konverteerida ühe tüübi teise või muudetavate ja muutumatute versioonide vahel:
val mutableList: MutableList<Int> = listOf(1, 2, 3).toMutableList()
val immutableList: List<Int> = mutableListOf(4, 5, 6).toList()
Kogumite töötlus Kotlinis on oluliselt lihtsam tänu standardraamatukogule ja laiendusfunktsioonidele.