Kotlin Academy · Lektion

Åtkomst till element: get, first, last, getOrNull

Hämta element med indexbaserade och funktionella åtkomstfunktioner.

Lektion 3 av 413 steg

Åtkomst till element: get, first, last, getOrNull är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Många sätt att komma åt element

Kotlin ger dig flera sätt att läsa element: via index ([], get), via position (first, last) och på ett säkert sätt (getOrNull, firstOrNull).

Indexåtkomst med []

get(index). Den kastar IndexOutOfBoundsException om indexet är ogiltigt.

fun main() {
    val items = listOf("a", "b", "c")
    println(items[0]) // a
    println(items[2]) // c
}

get jämfört med []

list.get(i) är identiskt med list[i] – olika syntax, samma beteende.

fun main() {
    val items = listOf(10, 20, 30)
    println(items.get(1)) // 20
    println(items[1])     // 20
}

getOrNull för säker åtkomst

getOrNull(i) returnerar null i stället för att kasta ett undantag om indexet ligger utanför intervallet.

fun main() {
    val items = listOf("x", "y")
    println(items.getOrNull(0)) // x
    println(items.getOrNull(5)) // null
}

getOrElse med ett standardvärde

getOrElse(i) { default } beräknar ett standardvärde vid behov om indexet är ogiltigt.

fun main() {
    val items = listOf(1, 2, 3)
    println(items.getOrElse(10) { -1 }) // -1
    println(items.getOrElse(1) { -1 })  // 2
}

first och last

first() och last() returnerar motsvarande element. Båda kastar ett undantag om listan är tom.

fun main() {
    val nums = listOf(5, 8, 12)
    println(nums.first()) // 5
    println(nums.last())  // 12
}

firstOrNull / lastOrNull

Varianterna ...OrNull returnerar null i stället för att kasta ett undantag för tomma listor – mycket säkrare.

fun main() {
    val empty: List<Int> = emptyList()
    println(empty.firstOrNull()) // null
    println(empty.lastOrNull())  // null
}

Predikatvarianter

first { predicate } returnerar det första matchande elementet. find { predicate } är det nullbara aliaset för 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)
}

Åtkomst till Map-värden

Map använder samma syntax med [], men den returnerar ett nullbart värde. getValue(key) kastar ett undantag om nyckeln saknas, medan getOrDefault tillhandahåller ett reservvärde.

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 och elementAtOrNull

Mängder och andra samlingar utan stöd för index tillhandahåller också elementAt(i) och dess OrNull-variant.

fun main() {
    val s = setOf("a", "b", "c")
    println(s.elementAt(1))          // b
    println(s.elementAtOrNull(10))   // null
}

Välj rätt åtkomstfunktion

Föredra de säkra varianterna (getOrNull, firstOrNull, getOrDefault) om du inte kan bevisa att indexet är giltigt. Undantag är kostsamma och lätta att glömma att hantera.

fun headOf(list: List<Int>): Int? = list.firstOrNull()
fun main() {
    println(headOf(listOf(1, 2, 3))) // 1
    println(headOf(emptyList()))      // null
}

Snabbkontroll

Vilken åtkomstfunktion returnerar null i stället för att kasta ett undantag när indexet ligger utanför intervallet?

Sammanfattning

Använd []/get för direkt åtkomst (kastar ett undantag vid fel). Föredra getOrNull, firstOrNull, lastOrNull, getOrDefault och getOrElse när gränserna kan vara ogiltiga. Map använder [] för nullbara värden och getValue för åtkomst som kastar ett undantag.

Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”Åtkomst till element: get, first, last, getOrNull” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Åtkomst till element: get, first, last, getOrNull”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Åtkomst till element: get, first, last, getOrNull”?

Hämta element med indexbaserade och funktionella åtkomstfunktioner. Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?

Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Åtkomst till element: get, first, last, getOrNull”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?

Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. listOf, setOf, mapOf: skrivskyddade samlingar
  2. mutableListOf, mutableMapOf: föränderliga byggare
  3. Åtkomst till element: get, first, last, getOrNull
  4. Iterera över och omforma samlingar med standardbiblioteket
← Tillbaka till Kotlin Academy