Menu
Coddy logo textTech

Перебор записей карты

Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 6 из 63.

Цикл for может деструктурировать каждую запись карты на её ключ и значение с помощью for ((key, value) in map). Используйте значение для подсчёта итогов, а ключ — для идентификации. Не предполагайте, что каждая реализация карты имеет отсортированный порядок итерации.

Внутри main:

val stock = mapOf("a" to 3, "b" to 5)
var total = 0
for ((name, count) in stock) {
    total += count
}
println(total)

Два количества дают в сумме три и пять.

Деструктуризация элемента сначала предоставляет его ключ, а затем значение.

challenge icon

Задание

Средне

Дополните stockTotal параметрами stock: Map<String, Int>. Используйте итерацию по элементам, чтобы вернуть сумму всех количеств. Для пустой карты итог равен нулю.

Если выше не указаны более строгие ограничения, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые представления или представления, выходящие за допустимый диапазон, как описано далее.

Верните значение типа Int. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его размера, за которым следуют его элементы, а карта начинается с количества её элементов, за которым следуют каждые ключ и значение. Вложенные списки повторяют формат «размер и элементы» для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один символ новой строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

Попробуйте сами

fun stockTotal(stock: Map<String, Int>): Int {
    // Напишите ваше решение здесь.
    return 0
}
fun main() {
    val stockCount = readln().toInt()
    val stock = mutableMapOf<String, Int>()
    for (i0 in 0 until stockCount) {
        val stockKey = readln()
        val stockValue = readln().toInt()
        stock[stockKey] = stockValue
    }
    println(stockTotal(stock))
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Kotlin