0Pricing
Kotlin Academy · Lekcja

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

  1. listOf, setOf, mapOf: kolekcje tylko do odczytu
  2. mutableListOf, mutableMapOf: konstruktory mutowalnych kolekcji
  3. Dostęp do elementów: get, first, last, getOrNull
  4. Iterowanie po kolekcjach i przekształcanie ich za pomocą biblioteki standardowej
← Powrót do Kotlin Academy