binary Search By
Начиная с Kotlin: 1.0
inline fun <T, K : Comparable<K>> List<T>.binarySearchBy(key: K?, fromIndex: Int = 0, toIndex: Int = size, crossinline selector: (T) -> K?): Int
Выполняет бинарный поиск в этом списке или его диапазоне элемента, у которого ключ, возвращаемый указанной функцией selector, равен заданному значению key. Предполагается, что список отсортирован по возрастанию согласно естественному порядку Comparable для ключей его элементов. В противном случае результат не определён.
Если список содержит несколько элементов с указанным key, не гарантируется, какой из них будет найден.
null значение считается меньшим любого значения, отличного от null.
Возвращает
индекс элемента с указанным key, если он содержится в списке в указанном диапазоне; в противном случае — инвертированную точку вставки (-insertion point - 1). Точка вставки определяется как индекс, по которому следует вставить элемент, чтобы список (или указанный поддиапазон списка) оставался отсортированным.
Примеры
import kotlin.math.*
import kotlin.test.*
fun main() {
//sampleStart
data class Box(val value: Int)
val numbers = listOf(1, 3, 7, 10, 12)
val boxes = numbers.map { Box(it) }
println(boxes.binarySearchBy(10) { it.value }) // 3
//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.collections/binary-search-by.html