Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 列表排序和获取元素_Kotlin - Fatal编程技术网

Kotlin 列表排序和获取元素

Kotlin 列表排序和获取元素,kotlin,Kotlin,我有课: class SportMan( val name: String, val points: Double, } 以及名为SportGuysList的Sportman对象列表。我想从包含前5个Sportman对象的SportGuysList创建一个新列表。您可以先按点数降序对列表进行排序,从列表中选取前5名玩家,然后按原始列表中的索引对其进行排序: val topByPoints = SportGuysList.sortedByDescending { it.points

我有课:

class SportMan(
   val name: String,
   val points: Double,
}

以及名为
SportGuysList
Sportman
对象列表。我想从包含前5个
Sportman
对象的
SportGuysList
创建一个新列表。您可以先按点数降序对列表进行排序,从列表中选取前5名玩家,然后按原始列表中的索引对其进行排序:

val topByPoints = SportGuysList.sortedByDescending { it.points }.take(5)
val result = topByPoints.sortedBy { SportGuysList.indexOf(it) }
如果
SportGuysList
很大,那么在排序过程中搜索每个结果元素的索引可能需要很长时间,因此您可以记住每个运动员旁边的原始索引:

val result = 
    SportGuysList.withIndex() // now we have pairs of value-index
    .sortedByDescending { it.value.points }  // sort by points
    .take(5)  // top 5
    .sortedBy { it.index } // sort back by index
    .map { it.value } // take only value from an each indexed pair

在科特林游乐场试一试:

您可以先按点数降序对列表进行排序,从中选出前5名玩家,然后按原始列表中的索引对他们进行排序:

val topByPoints = SportGuysList.sortedByDescending { it.points }.take(5)
val result = topByPoints.sortedBy { SportGuysList.indexOf(it) }
如果
SportGuysList
很大,那么在排序过程中搜索每个结果元素的索引可能需要很长时间,因此您可以记住每个运动员旁边的原始索引:

val result = 
    SportGuysList.withIndex() // now we have pairs of value-index
    .sortedByDescending { it.value.points }  // sort by points
    .take(5)  // top 5
    .sortedBy { it.index } // sort back by index
    .map { it.value } // take only value from an each indexed pair

尝试在科特林游乐场:

但这不起作用。它只返回按点排序的结果。。。我想保持相同的顺序,但选择具有前5个点的sportguys yep@llya这看起来是个好主意,但我只是尝试调试它,它只返回按点降序排序的结果:/是的,我做了!嗯,看起来很奇怪。我将再次检查它,它不是wokring…代码很简单,我只是复制粘贴它。。。。我使用的是MutableList而不是List->var sportsmen:MutableList=mutableListOf()。但这是不应该改变任何事情的…我已经添加了一个链接到科特林游乐场与答案的代码。它是否像你预期的那样工作?但这不起作用。它只返回按点排序的结果。。。我想保持相同的顺序,但选择具有前5个点的sportguys yep@llya这看起来是个好主意,但我只是尝试调试它,它只返回按点降序排序的结果:/是的,我做了!嗯,看起来很奇怪。我将再次检查它,它不是wokring…代码很简单,我只是复制粘贴它。。。。我使用的是MutableList而不是List->var sportsmen:MutableList=mutableListOf()。但这是不应该改变任何事情的…我已经添加了一个链接到科特林游乐场与答案的代码。它是否如你所期望的那样工作?