Kotlin标准库minBy/maxBy函数平局时的返回规则是什么?
Kotlin minBy/maxBy 平局时的返回规则
当使用minBy或maxBy处理包含两个比较值相同的对象的集合时,函数会返回集合中先出现的那个对象。
示例验证
定义一个简单的数据类,创建两个目标属性值相同的对象,通过代码直观验证:
data class Item(val name: String, val value: Int) fun main() { val items = listOf(Item("A", 10), Item("B", 10)) // minBy 返回集合第一个元素 Item(name=A, value=10) val minResult = items.minBy { it.value } println(minResult) // maxBy 同样返回集合第一个元素 Item(name=A, value=10) val maxResult = items.maxBy { it.value } println(maxResult) }
运行代码后,两次输出均为Item(name=A, value=10)。这是因为minBy和maxBy的底层逻辑是遍历集合时维护当前最优元素,遇到比较值相等的元素时不会替换已记录的元素,因此保留最先遍历到的对象。
内容的提问来源于stack exchange,提问作者Paxana Non Grata
相关产品推荐
相关产品推荐

