Функция 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,
которая сортирует в обратном порядке