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) 。插入点被定义为应该插入元素的索引,因此列表(或列表的指定子范围)仍然保持排序状态。