Выбор ответа Senior Коллекции и последовательности обновлено
Устойчивость сортировки в Kotlin
Вопрос
Список людей сначала отсортировали по имени, потом результат sortedBy { it.age }. В каком порядке окажутся люди одного возраста?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По алфавиту: сортировка в Kotlin устойчивая. sorted в Kotlin на JVM устойчивые (используют TimSort для объектов): элементы с равным ключом сохраняют взаимный порядок.
Варианты ответа
- По алфавиту: сортировка в Kotlin устойчиваяправильный ответ
- В случайном порядке: сортировка неустойчивая
- В обратном алфавитном: равные меняются местами
- В порядке исходного списка до первой сортировки
Разбор
sorted* в Kotlin на JVM устойчивые (используют TimSort для объектов): элементы с равным ключом сохраняют взаимный порядок. Поэтому после второй сортировки люди одного возраста останутся упорядочены по имени. Тем не менее понятнее явно: sortedWith(compareBy({ it.age }, { it.name })).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.