Spec-Zone.ru › Kotlin 1.4

binarySearchBy

kotlin-stdlib / kotlin.collections / binarySearchBy
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T, K : Comparable<K>> List<T>.binarySearchBy(
    key: K?, 
    fromIndex: Int = 0, 
    toIndex: Int = size, 
    crossinline selector: (T) -> K?
): Int

Ищет в этом списке или его диапазоне элемент, ключ которого, возвращаемый указанной функцией выбора, равен указанному значению ключа с использованием алгоритма бинарного поиска. Ожидается, что список отсортирован в порядке возрастания в соответствии с естественным порядком сравнения ключей его элементов. В противном случае результат не определён.

Если в списке содержится несколько элементов с указанным значением ключа, нет гарантии, какой из них будет найден.

null значение считается меньше любого ненулевого значения.

import kotlin.test.*

fun main(args: Array<String>) {
//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
}

Возвращает индекс элемента с указанным ключом, если он содержится в списке в указанном диапазоне; в противном случае инвертированную точку вставки (-insertion point - 1). Точка вставки определяется как индекс, в который следует вставить элемент, чтобы список (или указанный поддиапазон списка) оставался упорядоченным.

© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/binary-search-by.html

Spec-Zone.ru

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