Menu
Coddy logo textTech

Сортировка по ключу

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

sortedBy вычисляет ключ сравнения для каждого элемента и возвращает новый список в порядке возрастания ключей. sortedByDescending обращает порядок ключей. Элементы с одинаковыми ключами сохраняют свой исходный взаимный порядок, поскольку сортировка в Kotlin является стабильной.

Внутри main:

println(listOf("pear", "a", "kiwi", "to").sortedBy { it.length })

Слова упорядочены по длине; pear остаётся перед kiwi, поскольку их длины совпадают.

sortedBy сохраняет исходный порядок среди элементов с одинаковыми ключами.

challenge icon

Задание

Средне

Дополните shortWordsFirst параметром words: List<String>. Верните слова в порядке возрастания длины. Для слов одинаковой длины сохраните исходный порядок.

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

Верните значение типа List<String>. Не изменяйте предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его количества элементов, за которым следуют элементы, а map начинается с количества записей, за которым следуют каждый ключ и значение. Для каждого ряда вложенного списка повторяется формат с количеством и элементами. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

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

fun shortWordsFirst(words: List<String>): List<String> {
    // Напишите ваше решение здесь.
    return emptyList()
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    println(shortWordsFirst(words))
}
quiz iconПроверьте себя

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

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

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