gpt4 book ai didi

android - Kotlin 按范围内的值对数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:20 25 4
gpt4 key购买 nike

让我们有一个class Player(val position: Int, val time: Float)我们想要对 players 的数组或列表进行排序通过 position .如果其中一些 players有相同的position第一次排序后,我们想按 time 对它们进行排序在团队中。按组我的意思是一组 players具有相同的位置。

我知道

list.sortedWith(compareBy<Foo> { it.a }.thenByDescending { it.b }.thenBy { it.c })

当然这并不能解决这个问题。

在 Kotlin 中有什么聪明的方法可以完成这个简单的任务吗?我们可以通过检查位置和交换项目来手动对其进行排序,但我想知道 Kotlin 在这种情况下是否有话要说。

最佳答案

您可以先按 position 排序和 time然后按 time 分组具有标准的 Kotlin 功能。

例子

data class Player(val position: Int, val time: Float)

val p1 = Player(1, 10f)
val plys = arrayOf(p1, p1.copy(position = 3),
p1.copy(time = 0f), p1.copy(time = 20f),
p1.copy(position = 2), p1.copy(position = 2, time = 20f))

val groupBy = plys.sortedWith(compareBy(Player::position, Player::time))
.groupBy { it.position }

描述

  1. Array 进行排序通过 Playerpositiontime sortedWith + compareBy
  2. Player 分组的 position

结果

结果是 Map<Int,List<Player> ,在示例中如下所示:

    {
1=[Player(position=1, time=0.0), Player(position=1, time=10.0), Player(position=1, time=20.0)],
2=[Player(position=2, time=10.0), Player(position=2, time=20.0)],
3=[Player(position=3, time=10.0)]
}

关于android - Kotlin 按范围内的值对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45903816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com