Стандартная библиотека Kotlin: полный обзор и примеры

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Стандартная библиотека Kotlin: полный обзор

Стандартная библиотека Kotlin (stdlib) — это мощный набор инструментов, встроенный прямо в язык. Она предоставляет всё необходимое для повседневной разработки: от работы с коллекциями и строками до корутин и сериализации. В отличие от Java, Kotlin избавляет от шаблонного кода, предлагая лаконичный и выразительный синтаксис. В этом обзоре мы разберём ключевые модули stdlib с практическими примерами.

1. Работа с коллекциями

Библиотека предлагает неизменяемые (List, Set, Map) и изменяемые (MutableList, MutableSet, MutableMap) коллекции с богатым набором функций высшего порядка.

val numbers = listOf(1, 2, 3, 4, 5)
val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10]
val even = numbers.filter { it % 2 == 0 } // [2, 4]
val sum = numbers.reduce { acc, i -> acc + i } // 15

Ключевые функции:

  • map, filter, flatMap — трансформация и фильтрация
  • groupBy, partition — группировка элементов
  • zip, unzip — объединение коллекций
  • chunked, windowed — разбиение на части

2. Строки и регулярные выражения

Kotlin расширяет String методами, отсутствующими в Java: удаление префиксов/суффиксов, проверка на пустоту, шаблоны.

val text = "  Hello, Kotlin!  "
println(text.trim()) // "Hello, Kotlin!"
println(text.removePrefix("  ")) // "Hello, Kotlin!  "
println(text.contains(Regex("Kotlin"))) // true

// Многострочные строки с trimIndent
val json = """
    {
        "name": "Kotlin",
        "year": 2016
    }
""".trimIndent()

3. Null-безопасность и элвис-оператор

Одна из ключевых фич Kotlin — встроенная защита от NPE. Стандартная библиотека предоставляет функции безопасного вызова (?.let) и элвис-оператор (?:).

val name: String? = getUserName()
val length = name?.length ?: 0 // если name == null, то 0
name?.let { println("Name is $it") } // выполняется только если name != null

4. Корутины (kotlinx.coroutines)

Хотя корутины формально являются отдельной библиотекой, они считаются частью экосистемы Kotlin. Позволяют писать асинхронный код синхронно.

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
}

Основные компоненты:

  • launch — запуск корутины без возврата значения
  • async — запуск с возвратом Deferred
  • withContext — переключение контекста (например, на UI поток)
  • Каналы (Channel) — для передачи данных между корутинами

5. Сериализация (kotlinx.serialization)

Встроенная поддержка JSON, Protobuf, CBOR и других форматов через аннотации.

import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class User(val name: String, val age: Int)

fun main() {
    val user = User("Alice", 30)
    val json = Json.encodeToString(user)
    println(json) // {"name":"Alice","age":30}
    
    val decoded = Json.decodeFromString<User>(json)
    println(decoded) // User(name=Alice, age=30)
}

6. Потоки и последовательности

Для ленивых вычислений используйте Sequence вместо List — это экономит память при работе с большими данными.

val seq = generateSequence(1) { it + 1 } // бесконечная последовательность
    .take(10)
    .filter { it % 2 == 0 }
    .toList()
println(seq) // [2, 4, 6, 8, 10]

Функции-расширения для потоков (java.util.stream) также доступны:

                
    
    

Рекомендаций