Spec-Zone.ru › Kotlin 2

затемПо

kotlin-stdlib/kotlin.comparisons/thenBy

Начиная с Kotlin: 1.0

inline fun <T> Comparator<T>.thenBy(crossinline selector: (T) -> Comparable<*>?): Comparator<T>

Создает компаратор, сравнивающий значения, которые основной компаратор признал равными. Для сравнения он использует функцию, преобразующую значение в экземпляр Comparable.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val list = listOf("aa", "b", "bb", "a")

val lengthComparator = compareBy<String> { it.length }
println(list.sortedWith(lengthComparator)) // [b, a, aa, bb]

val lengthThenString = lengthComparator.thenBy { it }
println(list.sortedWith(lengthThenString)) // [a, b, aa, bb] 
   //sampleEnd
}

inline fun <T, K> Comparator<T>.thenBy(comparator: Comparator<in K>, crossinline selector: (T) -> K): Comparator<T>

Создает компаратор, сравнивающий значения, которые основной компаратор признал равными. Он использует функцию selector для преобразования значений, а затем сравнивает их с заданным компаратором.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val list = listOf("A", "aa", "b", "bb", "a")

val lengthComparator = compareBy<String> { it.length }
println(list.sortedWith(lengthComparator)) // [A, b, a, aa, bb]

val lengthThenCaseInsensitive = lengthComparator
    .thenBy(String.CASE_INSENSITIVE_ORDER) { it }
println(list.sortedWith(lengthThenCaseInsensitive)) // [A, a, b, aa, bb] 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.comparisons/then-by.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API