gpt4 book ai didi

kotlin - 如何删除所有指向给定值的键

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

让我们有以下(可变) map :

1   -> A
45 -> A
88 -> R
98 -> X
105 -> A

现在我想删除所有指向 A 的项目。我想出了以下代码:

// Version 1
myMap.forEach { key, value -> if (value == "A") myMap.remove(key) }

// Version 2
with (myMap) {
val filtered = filterValues { it != "A" }
clear()
putAll(filtered)
}

但不知何故,这似乎都不对。那么什么是正确、最优雅的方式呢?

最佳答案

这样做的一种方法是将您的 map 声明为 Map 而不是 MutableMap 并用其自身的过滤版本覆盖它:

var myMap = mapOf(1 to "A", 2 to "B")
myMap = myMap.filterValues { it != "A" }
println(myMap)

如果您想要 MutableMap(但仍然是 var)版本,则类似:

var myMap = mutableMapOf(1 to "A", 2 to "B")
myMap = myMap.filterValues { it != "A" } as MutableMap
println(myMap)

更新:Mario Topolnik 正确地指出,这里的转换比调用 .toMutableMap() 更有效,因为没有创建新副本。

关于kotlin - 如何删除所有指向给定值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349867/

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