Pole je zoskupenie jeden a viac prvkov. Na vytvorenie poľa použijeme funkciu arrayOf. Do pola môžeme dať hodnoty rôzneho typu.
val mena = arrayOf("Jaro", "Peter");
val rozne = arrayOf("Jaro", 10, Osoba("Tomas", "145878/8787"), false, "Peter");
Aj miešame typy elementov, tak tento array rozne bude nakoniec typu Array<Any>
Ak chceme zašpecifikovať napríklad int, double, float array môžeme:
javaval intCisla = intArrayOf(10,10)
val doubleCisla = doubleArrayOf(10.0,10.1)
val floatCisla = floatArrayOf(15.0f, 45.0f)
Každý prvok poľa má index. Index slúži na presné identifikovanie prvku v poli. V poliach začíname prvky – teda indexi počítať od 0.
Ak mám pole dĺžky 10, tak má tieto indexi: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Prvý element (prvok) má index 0.
Ak hovorím o elementoch – prvkoch, tak mám na mysli hodnotu, ktorá je uchovaná v poli na danom indexe.
![idea kotlin 17](https://jaroslavbeno.sk/wp-content/uploads/2020/05/idea-kotlin-17.jpg)
Polia majú pevne definovanú dĺžku pri inicializácii. Pole nevieme inak rozšíriť. Ak som vytvoril pole s 5 elementami, tak navždy tam bude 5 „priečinkov“ na uloženie dát.
val mena = arrayOf("Jaro", "Peter");
println(mena[0]) //vypíše Jaro
println(mena[1]) //vypíše Peter
println(mena[2]) //nastane chyba, taký index v poli nie je
Ak chcem zmeniť hodnotu na danom indexe môžem.
mena[1] = "Ferko"
println(mena[1]) //vypíše Ferko
Napríklad aj String je vlastne pole znakov. Teda je možné napríklad toto:
val jarko = "Jarko"
println(jarko[0]) //vypíše J
Čo ak chcem spojiť dva polia dokopy? Môžem za pomoci +, ale polia musia mať elementy rovnakého typu.
val mena = arrayOf("Jaro", "Peter");
val mena2 = arrayOf("Ferko", "Evka");
val spoluMena = mena + mena2
Pri poliach máme veľké množstvo pomocných funkcií a premenných ako je napríklad získanie veľkosti poľa spoluMena.size.
![idea kotlin 18](https://jaroslavbeno.sk/wp-content/uploads/2020/05/idea-kotlin-18.jpg)
Chceš zistiť, či je zoznam prázdny? Použiješ isEmpty
![idea kotlin 19](https://jaroslavbeno.sk/wp-content/uploads/2020/05/idea-kotlin-19.jpg)
Obsahuje pole element? Použiješ contains().
Do metódy arrayOf vieme podsunúť akého typu má byť, ak za metódu napíšeme typ medzi znaky <>.
val longArray = arrayOf(10L, 15L)
val longArray2 = arrayOf<Long>(10,15)
Advance array
Ak všetko v Kotlin je objekt, tak aj pole a to presne Array trieda. Teda môžeme použiť Array na zostrojenie poľa.
Chceme zostrojiť Array Intov o dĺžke 10 elementov a zároveň naplniť toto pole pomocou lambda výrazu? Lambda výraz je špeciálny typ funkcie.
val pole = Array<Int>(10){ i -> i}
for(j in pole){
println(j)
}
Čo sa stalo? Vytvoril som nový Array Intov o dĺžke 10: Array<Int>(10) a medzi kučeravé zátvorky som napísal aký príkaz sa má vykonať i -> i. Tu som povedal, že budem mať premennú i – tá bude typu int a bude tam index a i sa posunie do kódu za šípkou kde mám teraz len i a tak sa i priradí do pola na index i. V tomto prípade sa index počíta od 0.
Ak by som chcel len párne čísla, tak viem napísať napr. toto:
val pole = Array<Int>(10){ i -> i*2 }
for(j in pole){
println(j)
}
Vo výsledku bude na výpise:
0 2 4 6 8 10 12 14 16 18 |
Daným príkazom – lambda výrazom – vravím, akú hodnotu chceme priradiť na daný index. Kľudne nemusíme daný index používať.
Ak chcem pole mien, naplnených tým istým menom:
val menaArray = Array(10){ i -> "Jaro"}
for(m in menaArray){
println(m)
}
Na výpise bude 10x meno Jaro.
Je možné vytvoriť prázdne pole, ktoré bude očakávať napríklad Int.
val nullIntPole = arrayOfNulls<Int?>(5)
Vytvorilo sa pole o dĺžke 5 a všade bude null, lebo som povedal, že chcem nullable Int. Ak ale chcem použiť nejakú metódu špecifickú pre Int, tak som obmedzený a nemôžem použiť Int funkcie, lebo kompilátor vie, že je to nullable a teda tam môže byť aj null. Použijeme safe call:
nullIntPole[0].toBigDecimal() //nie je možné
nullIntPole[0]?.toBigDecimal() //je možné
Najnovšie články
- Písanie kódu – programovanie v Jave
- Naprogramuj si vlastnú Android aplikáciu v jazyku Kotlin
- Divi scroll efekty
- Dizajnujem web v Divi téme (WordPress)
- Divi najlepšia WordPress téma – 9 dôvodov prečo ju používať (2020)
Páčil sa ti článok? Zváž zdieľanie. Ďakujeme.