首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表排序和获取元素

列表排序和获取元素
EN

Stack Overflow用户
提问于 2019-10-07 08:38:37
回答 1查看 42关注 0票数 0

我有课:

代码语言:javascript
运行
复制
class SportMan(
   val name: String,
   val points: Double,
}

并列出Sportman对象的命名SportGuysList。我想从具有前5个Sportman对象的SportGuysList创建新列表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-07 09:09:58

您可以首先按分数降序对列表进行排序,从列表中取出前5名球员,然后按原始列表中的索引对其进行排序:

代码语言:javascript
运行
复制
val topByPoints = SportGuysList.sortedByDescending { it.points }.take(5)
val result = topByPoints.sortedBy { SportGuysList.indexOf(it) }

如果SportGuysList很大,那么在排序期间搜索每个结果元素的索引可能需要很长时间,这样您就可以记住它旁边每个运动员的原始索引:

代码语言:javascript
运行
复制
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

去考特林游乐场试试:https://pl.kotl.in/kMkpkIdEH

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58262354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档