为什么这个kotlin代码没有返回最大索引(它总是返回0索引)
为什么此kotlin代码没有返回最大索引(它总是返回0索引)为什么这个kotlin代码没有返回最大索引(它总是返回0索引),kotlin,Kotlin,为什么此kotlin代码没有返回最大索引(它总是返回0索引) fun getMaxModel():Model{ val city=模型列表 var modelIndex:Int=0 变量pop:Float=0F 用于(0.城市中的i.尺寸-1){ if(pop
fun getMaxModel():Model{
val city=模型列表
var modelIndex:Int=0
变量pop:Float=0F
用于(0.城市中的i.尺寸-1){
if(pop
始终返回0索引
我需要返回最大索引您可以使用此
val max = nums.indexOf(nums.max())
在您的函数中尝试以下操作:
val max = modelList.maxOrNull()
如果需要最大值的索引,请尝试以下操作:
val maxIndex = modelList.indexOf(max)
我还建议你看看这个
关于如何使用kotlin中的集合进行操作,有很多有用的信息。
kotlin团队还提供了一系列很酷的练习,当您尝试学习如何使用收藏时,这些练习会有很大帮助:
只需使用高阶函数,无需循环所有数据,如下所示:
fun getIndexMinPopModel(): Int {
return modelList.minByOrNull { it.population }?.let { modelList.indexOf(it) }
}
我在这段代码中没有看到bug。你能提供一个完整的例子和数据,这样我们可以复制它吗?而且,您实际上重新发明了函数。你的整个函数可以被简单的替换:
maxBy{it.population}
。好吧,maxBy()
被重命名为maxByOrNull()
。只是好奇,为什么要转换成Float
来进行比较?正如@broot所说的,你真的不需要自己实现它,除非它具有教育意义maxByOrNull
和许多其他集合扩展在Kotlin中可用。您得到此结果的原因可能是城市列表为空?确保你检查了你的数据。另外,您不返回索引,而是在这里返回模型
,因此我不确定您所说的是模型索引
的值还是其他值
fun getIndexMinPopModel(): Int {
return modelList.minByOrNull { it.population }?.let { modelList.indexOf(it) }
}