НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
463 of 1310 menu

Функция sortedWith

Функция sortedWith выполняет сортировку элементов коллекции с использованием объекта Comparator, который определяет порядок сортировки. Возвращает новую отсортированную коллекцию, не изменяя исходную. Работает с массивами Array, списками List и множествами Set. Для коллекций Map функция недоступна.

Импорт

import kotlin.collections.sortedWith

Синтаксис

fun <T> Array<out T>.sortedWith(comparator: Comparator<in T>): List<T>
fun <T> Iterable<T>.sortedWith(comparator: Comparator<in T>): List<T>

Пример

Отсортируем массив чисел в обратном порядке:

val numbers = arrayOf(3, 1, 4, 1, 5, 9) val comparator = compareBy<Int> { it }.reversed() val res = numbers.sortedWith(comparator) println(res)

Результат выполнения кода:

List<Int> [9, 5, 4, 3, 1, 1]

Пример

Отсортируем список строк по длине:

val words = listOf("apple", "banana", "cherry", "date") val comparator = compareBy<String> { it.length } val res = words.sortedWith(comparator) println(res)

Результат выполнения кода:

List<String> ["date", "apple", "banana", "cherry"]

Пример

Отсортируем множество по пользовательскому компаратору:

val numbers = setOf(15, 7, 23, 4, 19) val comparator = Comparator<Int> { a, b -> a % 10 - b % 10 } val res = numbers.sortedWith(comparator) println(res)

Результат выполнения кода:

List<Int> [23, 4, 15, 7, 19]

Пример

Сортировка с использованием нескольких критериев:

data class Person(val name: String, val age: Int) val people = listOf( Person("Alice", 25), Person("Bob", 30), Person("Charlie", 25) ) val comparator = compareBy<Person> { it.age }.thenBy { it.name } val res = people.sortedWith(comparator) println(res)

Результат выполнения кода:

List<Person> [Person(name=Alice, age=25), Person(name=Charlie, age=25), Person(name=Bob, age=30)]

Смотрите также

  • функцию sorted,
    которая выполняет естественную сортировку
  • функцию sortedBy,
    которая сортирует по ключу
  • функцию sortedDescending,
    которая сортирует в обратном порядке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить