Ce face List.getOrNull
lista[i] aruncă IndexOutOfBoundsException dacă poziția nu există. getOrNull(i) întoarce în acest caz null, iar getOrElse(i) { ... } întoarce rezultatul funcției date (care primește poziția cerută).
elementAt(i) funcționează pe orice Iterable, inclusiv pe mulțimi, care nu au operatorul []. Pe o mulțime ordonată (setOf, sortedSetOf) poziția are sens; pe un HashSet ordinea nu este garantată. Există și elementAtOrNull și elementAtOrElse.
Parametri
| Parametru | Descriere |
|---|---|
index |
Poziția cerută (de la 0). |
implicit |
Pentru getOrElse: funcția care dă valoarea când poziția nu există. |
Ce returnează
Elementul de la poziție, null (la getOrNull) sau valoarea implicită.
Exemple
Exemplul 1: Argumente opționale
Simulăm argumentele unui program. Poziția 2 nu există, așa că folosim o valoare implicită.
fun main() {
val argumente = listOf("raport", "2026")
val comanda = argumente.getOrNull(0) ?: "ajutor"
val an = argumente.getOrNull(1)?.toIntOrNull() ?: 2025
val format = argumente.getOrElse(2) { "pdf" }
println("comandă=$comanda an=$an format=$format")
println(argumente.getOrElse(5) { i -> "poziția $i lipsește" })
}
Rezultat
comandă=raport an=2026 format=pdf
poziția 5 lipsește
Exemplul 2: elementAt pe o mulțime
O mulțime creată cu setOf păstrează ordinea inserării, deci a doua poziție are sens.
fun main() {
val podium = setOf("Ioana", "Vlad", "Sorina")
println(podium.elementAt(1))
println(podium.elementAtOrNull(7))
try {
podium.elementAt(7)
} catch (e: IndexOutOfBoundsException) {
println("Eroare: ${e.message}")
}
}
Rezultat
Vlad
null
Eroare: Collection doesn't contain element at index 7.
Greșeli frecvente
- Verifici manual
if (i < lista.size) lista[i] else null, dar uiți de pozițiile negative.getOrNulltratează ambele cazuri. - Folosești
elementAtpe unHashSetși te bazezi pe rezultat: ordinea nu este garantată.
Comenzi înrudite
Iterable.first: first/last întorc primul sau ultimul element (sau primul care îndeplinește o condiție); variantele OrNull dau null în loc de excepție.List.indices: indices este intervalul pozițiilor valide ale listei (0..size-1); lastIndex este poziția ultimului element.List: Tipul listei doar pentru citire: elemente în ordine, accesate după poziție, fără funcții de adăugare sau ștergere.Map.getValue: Citește valoarea unei chei: getValue aruncă excepție dacă lipsește, getOrDefault și getOrElse dau o valoare de rezervă.