🎯 Kotlin

Sammlungen in Kotlin

Коллекции Kotlin: List, Map, Set и функции расширения

Коллекции — структуры для хранения множества элементов. Kotlin предоставляет богатый API: List, Set, Map, и огромное количество extension functions для работы с ними как с SQL pipeline!

List — упорядоченный список

val fruits = listOf("Яблоко", "Банан", "Вишня")  // Неизменяемый
println(fruits[0])         // Яблоко
println(fruits.size)       // 3
println(fruits.first())    // Яблоко
println(fruits.last())     // Вишня
println(fruits.contains("Банан"))  // true

val mutable = mutableListOf("Яблоко", "Банан")
mutable.add("Апельсин")
mutable.removeAt(0)
mutable[0] = "Груша"
println(mutable)  // [Груша, Апельсин]

Map — ключ-значение

val capitals = mapOf("Россия" to "Москва", "Франция" to "Париж")
println(capitals["Россия"])  // Москва
println(capitals.getOrDefault("Бразилия", "?"))  // ?
println(capitals.keys)    // [Россия, Франция]
println(capitals.values)  // [Москва, Париж]

val scores = mutableMapOf("Саша" to 95, "Маша" to 87)
scores["Петя"] = 91
scores["Саша"] = 100

Set — множество

val set1 = setOf(1, 2, 3, 4, 5)
val set2 = setOf(4, 5, 6, 7, 8)

println(set1.intersect(set2))  // [4, 5]
println(set1.union(set2))      // [1, 2, 3, 4, 5, 6, 7, 8]
println(set1.subtract(set2))   // [1, 2, 3]

val mutableSet = mutableSetOf(1, 2, 3)
mutableSet.add(2)  // Дубликат — не добавится!
mutableSet.add(4)
println(mutableSet)  // [1, 2, 3, 4]

Операции с коллекциями

data class Student(val name: String, val age: Int, val gpa: Double)

val students = listOf(
    Student("Саша", 20, 4.5), Student("Маша", 19, 3.8),
    Student("Петя", 21, 4.2), Student("Аня", 20, 4.7),
    Student("Вася", 22, 3.5)
)

val names = students.map { it.name }
println(names)  // [Саша, Маша, Петя, Аня, Вася]

val honors = students.filter { it.gpa >= 4.0 }

val byAge = students.groupBy { it.age }

// SQL-like pipeline!
val topNames = students
    .filter { it.gpa >= 4.0 }
    .sortedByDescending { it.gpa }
    .take(3)
    .map { "${it.name}: ${it.gpa}" }
println(topNames)  // [Аня: 4.7, Саша: 4.5, Петя: 4.2]

println(students.count { it.age >= 20 })  // 3
println(students.sumOf { it.gpa })        // 20.7
println(students.maxByOrNull { it.gpa }?.name)  // Аня

Scope Functions

data class Config(var host: String = "", var port: Int = 0)

// apply — настройка объекта, возвращает объект
val config = Config().apply { host = "localhost"; port = 8080 }

// let — трансформация (возвращает результат лямбды)
val name: String? = "kotlin"
val upper = name?.let { it.uppercase() }

// also — побочный эффект, возвращает объект
val list = mutableListOf(1, 2, 3)
    .also { println("Создан: $it") }
    .also { it.add(4) }

// run — блок вычислений
val info = config.run { "Host=$host, Port=$port" }

// with — вызов методов без повторения имени
with(config) { println("$host:$port") }

Sequences — ленивые коллекции

// Sequence обрабатывает элементы лениво — эффективнее для больших данных!
val result = (1..1_000_000)
    .asSequence()
    .filter { it % 2 == 0 }
    .map { it * it }
    .take(5)  // Только 5 — остальные не вычисляются!
    .toList()
println(result)  // [4, 16, 36, 64, 100]

Итоги урока

  • List/MutableList — упорядоченный список
  • Set/MutableSet — множество без дубликатов
  • Map/MutableMap — ключ-значение
  • filter/map/reduce/groupBy/sortedBy — pipeline операций
  • Scope functions: apply, let, also, run, with
  • Sequence — ленивые вычисления для больших данных

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!