Dostęp do elementów: get, first, last, getOrNull
Pobieraj elementy za pomocą indeksowanych i funkcyjnych metod dostępu.
Dostęp do elementów: get, first, last, getOrNull to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Wiele sposobów uzyskiwania dostępu
Kotlin udostępnia kilka sposobów odczytywania elementów: według indeksu ([], get), według pozycji (first, last) oraz w sposób bezpieczny (getOrNull, firstOrNull).
Dostęp za pomocą indeksu z użyciem []
Składnia nawiasów kwadratowych jest skrótem dla get(index). Jeśli indeks jest nieprawidłowy, zgłaszany jest wyjątek IndexOutOfBoundsException.
fun main() {
val items = listOf("a", "b", "c")
println(items[0]) // a
println(items[2]) // c
}get a []
list.get(i) jest identyczne z list[i] — inna składnia, takie samo działanie.
fun main() {
val items = listOf(10, 20, 30)
println(items.get(1)) // 20
println(items[1]) // 20
}getOrNull do bezpiecznego dostępu
getOrNull(i) zwraca null zamiast zgłaszać wyjątek, jeśli indeks wykracza poza zakres.
fun main() {
val items = listOf("x", "y")
println(items.getOrNull(0)) // x
println(items.getOrNull(5)) // null
}getOrElse z wartością domyślną
getOrElse(i) { default } oblicza wartość domyślną z opóźnieniem, jeśli indeks jest nieprawidłowy.
fun main() {
val items = listOf(1, 2, 3)
println(items.getOrElse(10) { -1 }) // -1
println(items.getOrElse(1) { -1 }) // 2
}first i last
first() i last() zwracają odpowiednio pierwszy i ostatni element; obie funkcje zgłaszają wyjątek, jeśli lista jest pusta.
fun main() {
val nums = listOf(5, 8, 12)
println(nums.first()) // 5
println(nums.last()) // 12
}firstOrNull / lastOrNull
Warianty ...OrNull zwracają null zamiast zgłaszać wyjątek dla pustych list — to znacznie bezpieczniejsze rozwiązanie.
fun main() {
val empty: List<Int> = emptyList()
println(empty.firstOrNull()) // null
println(empty.lastOrNull()) // null
}Warianty z predykatem
first { predicate } zwraca pierwszy pasujący element; find { predicate } to dopuszczający null alias funkcji firstOrNull { predicate }.
fun main() {
val nums = listOf(3, 7, 8, 11)
println(nums.first { it > 5 }) // 7
println(nums.firstOrNull { it > 100 }) // null
println(nums.find { it > 100 }) // null (same)
}Uzyskiwanie dostępu do wartości mapy
Mapy używają tej samej składni [], ale zwraca ona wartość dopuszczającą null. getValue(key) zgłasza wyjątek, jeśli brakuje klucza, a getOrDefault udostępnia wartość zastępczą.
fun main() {
val ages = mapOf("Alice" to 30, "Bob" to 25)
println(ages["Alice"]) // 30
println(ages["Charlie"]) // null
println(ages.getOrDefault("Z", 0)) // 0
}elementAt i elementAtOrNull
Zbiory i inne kolekcje bez obsługi indeksów również udostępniają elementAt(i) oraz jego wariant OrNull.
fun main() {
val s = setOf("a", "b", "c")
println(s.elementAt(1)) // b
println(s.elementAtOrNull(10)) // null
}Wybór właściwego akcesora
Preferuj bezpieczne warianty (getOrNull, firstOrNull, getOrDefault), chyba że możesz dowieść, że indeks jest prawidłowy. Wyjątki są kosztowne i łatwo zapomnieć o ich obsłużeniu.
fun headOf(list: List<Int>): Int? = list.firstOrNull()
fun main() {
println(headOf(listOf(1, 2, 3))) // 1
println(headOf(emptyList())) // null
}Szybkie sprawdzenie
Który akcesor zwraca null zamiast zgłaszać wyjątek, gdy indeks wykracza poza zakres?
Podsumowanie
Używaj []/get do bezpośredniego dostępu — w razie błędu funkcje te zgłaszają wyjątek. Preferuj getOrNull, firstOrNull, lastOrNull, getOrDefault i getOrElse, gdy zakres może być nieprawidłowy. Mapy używają [] do dostępu zwracającego wartość dopuszczającą null oraz getValue do dostępu zgłaszającego wyjątek.
Często zadawane pytania
Czy lekcja „Dostęp do elementów: get, first, last, getOrNull” jest bezpłatna?
Tak — pełny tekst „Dostęp do elementów: get, first, last, getOrNull” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Dostęp do elementów: get, first, last, getOrNull”?
Pobieraj elementy za pomocą indeksowanych i funkcyjnych metod dostępu. Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Dostęp do elementów: get, first, last, getOrNull”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- listOf, setOf, mapOf: kolekcje tylko do odczytu
- mutableListOf, mutableMapOf: konstruktory mutowalnych kolekcji
- Dostęp do elementów: get, first, last, getOrNull
- Iterowanie po kolekcjach i przekształcanie ich za pomocą biblioteki standardowej