Доступ к элементам: 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 — локальная установка не требуется.
Все уроки этого курса
- listOf, setOf, mapOf: доступные только для чтения коллекции
- mutableListOf, mutableMapOf: изменяемые построители
- Доступ к элементам: get, first, last, getOrNull
- Перебор и преобразование коллекций со стандартной библиотекой