Ďalším veľmi často používaným dátovým typom v Kotline je typ List. Z jazyka C++ sa veľmi podobá predovšetkým na vector alebo klasické pole.
List má podľa definície dynamickú veľkosť Kotlin ale nemá rád zmeny premenných (ako sme videli pri val a var) preto poznáme typy List a MutableList.
Tu sú všetky možnosti vytvorenia a niektoré možnosti použitia zoznamov:
fun main() {
val zoznam1 : List<String> = listOf("Janko", "Jurko") // vymenovanie prvkov
val zoznam2 : List<String> = emptyList() // prazdny zoznam
val zoznam3 : List<Int> = List(10) { i -> i } // konstruktor
val zoznam4 : MutableList<String> = mutableListOf("Janko", "Jurko")
val zoznam5 : MutableList<String> = mutableListOf()
val zoznam6 : MutableList<Int> = MutableList(10) { i -> i }
println(zoznam1[1]) // Jurko
zoznam1[0] = "Marek" // chyba kompilacie
zoznam1[2] = "Marek" // chyba kompilacie
println(zoznam4[1]) // Jurko
zoznam4[0] = "Marek" // OK zoznam4 = { "Marek", "Jurko" }
zoznam4[2] = "Marek" // out of bounds error
zoznam4 += "Lukas" // OK zoznam4 = { "Marek", "Jurko", "Lukas" }
zoznam4.add(1, "Tom") // OK zoznam4 = { "Marek", "Tom", "Jurko", "Lukas" }
}
Úloha: Skús nájsť funkcie
- pre mazanie
n-tej položky zo zoznamu- pre zoradenie zoznamu
- pre zamiešanie zoznamu
- pre výber náhodnej položky zo zoznamu
Bonus: Zápis s konštruktorom takmer nepoužívame. Ale pre vysvetlenie
List(10) = pole bude mať 10 položieki-tu položku { i -> { i -> i } znamená že 0-tá položka bude mať hodnotu 0, prvá položka 1, druhá 2 atď.Zo štandardného vstupu načítaj 5 riadkov textu. Po ich načítaní ich vypíš v obrátenom poradí. Použi len jednu premennú.
Bonus: nad zoznamom existuje funkcia pre otočenie zoznamu. Skús ju nájsť a použiť