0Pricing
Kotlin Academy · Урок

Доступ к элементам: get, first, last, getOrNull

Получайте элементы с помощью индексного и функционального доступа.

«Доступ к элементам: get, first, last, getOrNull» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Много способов доступа

Kotlin предоставляет несколько способов чтения элементов: по индексу ([], get), по позиции (first, last) и безопасно (getOrNull, firstOrNull).

Доступ по индексу с помощью []

Синтаксис с квадратными скобками — это сокращение для get(index). При недопустимом индексе возникает IndexOutOfBoundsException.

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

get и []

list.get(i) полностью эквивалентен list[i] — синтаксис разный, поведение одинаковое.

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

getOrNull для безопасного доступа

getOrNull(i) возвращает null вместо исключения, если индекс выходит за допустимый диапазон.

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

getOrElse со значением по умолчанию

getOrElse(i) { default } лениво вычисляет значение по умолчанию, если индекс недопустим.

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

first и last

first() и last() возвращают соответствующие элементы; обе функции вызывают исключение, если список пуст.

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

firstOrNull / lastOrNull

Варианты ...OrNull возвращают null вместо исключения для пустых списков — это гораздо безопаснее.

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

Варианты с условием

first { predicate } возвращает первый подходящий элемент; find { predicate } — допускающий значение null псевдоним для 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)
}

Доступ к значениям отображения

Отображения используют тот же синтаксис [], но он возвращает допускающее значение null. getValue(key) вызывает исключение, если ключ отсутствует; getOrDefault предоставляет запасной вариант.

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

Множества и другие коллекции без поддержки индексов также предоставляют elementAt(i) и его вариант OrNull.

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

Выбор подходящего способа доступа

Предпочитайте безопасные варианты (getOrNull, firstOrNull, getOrDefault), если только вы не можете доказать, что индекс допустим. Исключения требуют больших затрат и о них легко забыть.

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

Быстрая проверка

Какой способ доступа возвращает null вместо исключения, если индекс выходит за допустимый диапазон?

Повторение

Используйте []/get для прямого доступа — при ошибке возникает исключение. Если границы могут быть недопустимыми, предпочитайте getOrNull, firstOrNull, lastOrNull, getOrDefault и getOrElse. Для допускающих значение null результатов отображения используют [], а для вызова исключения — getValue.

Часто задаваемые вопросы

Урок «Доступ к элементам: get, first, last, getOrNull» бесплатный?

Да — полный текст урока «Доступ к элементам: get, first, last, getOrNull» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «Доступ к элементам: get, first, last, getOrNull»?

Получайте элементы с помощью индексного и функционального доступа. Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Доступ к элементам: get, first, last, getOrNull»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. listOf, setOf, mapOf: доступные только для чтения коллекции
  2. mutableListOf, mutableMapOf: изменяемые построители
  3. Доступ к элементам: get, first, last, getOrNull
  4. Перебор и преобразование коллекций со стандартной библиотекой
← Назад к Kotlin Academy