让我们有 class Player(val position: Int, val time: Float)
,我们想要 position
排序 players
的数组或列表 . 如果其中一些 players
在第一次排序后具有相同的 position
,我们希望按组中的 time
对它们进行排序 . 按组分组,我的意思是 players
的位置相同 .
我知道
list.sortedWith(compareBy<Foo> { it.a }.thenByDescending { it.b }.thenBy { it.c })
但当然它并没有解决这个问题 .
在Kotlin有没有聪明的方法来完成这个简单的任务?我们可以通过检查位置和交换项目来手动排序,但我想知道Kotlin在这种情况下是否有话要说 .
1 回答
您可以先按
position
和time
排序,然后按time
分组,使用标准的Kotlin功能 .示例
说明
由
Player
的position
和time
排序Array
与sortedWith compareBy将它分组
Player
的position
结果
结果是
Map<Int,List<Player>
,在示例中看起来像这样: