binarySearchBy所在位置是kotlin.collections.binarySearchBy,其相關用法介紹如下。

用法:

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 值被認為小於任何非空值。

例子:

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
}

輸出:

3

返回具有指定key的元素的索引,如果它包含在指定範圍內的列表中;否則,反轉插入點 (-insertion point - 1) 。插入點被定義為應該插入元素的索引,因此列表(或列表的指定子範圍)仍然保持排序狀態。