gpt4 book ai didi

kotlin - map : Kotlin 中的重复值

转载 作者:行者123 更新时间:2023-12-02 02:45:47 24 4
gpt4 key购买 nike

我有一个场景,我需要一个包含重复键和值的映射。我首先创建了一个列表,然后使用关联将它们转换为 map ,但是没有考虑重复问题。这是我的实现:

class State(private val startStatus: Status, private val expectedStatus: Status) {

companion object StatusList {
val listStatuses = listOf(
State(Status.A, Status.B),
State(Status.B, Status.A),
State(Status.B, Status.C),
State(Status.C, Status.B),
State(Status.C, Status.E),
State(Status.C, Status.D),
State(Status.D, Status.B),
State(Status.E, Status.C),
State(Status.E, Status.B)
)

open fun mapStatuses(): Map<Status, Collection<Status>> {
return listStatuses.associateBy(
keySelector = { key -> key.expectedStatus },
valueTransform = State::startStatus)
}
}
}

我正在努力在 Kotlin 中找到一个可以让我处理重复项的 Multimap。你能帮忙吗?

谢谢

最佳答案

简而言之,Kotlin 中没有多重映射。

多重映射将允许多个具有不同值的等效键 - 这可以通过唯一键和与给定键关联的值集合来实现,而不是查看具有等效键的键值对集合。

因此,您可以使用groupBy():

data class Record(val id: Int, val name: String)

fun main() {
val records = listOf(
Record(1, "hello"),
Record(1, "there"),
Record(2, "general"),
Record(2, "kenobi")
)

val mapped = records.groupBy({ it.id }, { it.name })

for (entry in mapped) {
println("${entry.key} -> ${entry.value.joinToString()}")
}
}

这里我使用 groupBy 和键的投影(即 Recordid)和值的投影(即Record名称)。与您的 StateStatus 非常相似。

关于kotlin - map : Kotlin 中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62835436/

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