如何在Kotlin中过滤可变地图

osh*_*hai 4 dictionary kotlin

我想从中删除项目MutableMap,类似于filter
在列表中,我可以使用removeAll { }retainAll { }
(请参阅此问题:如何使用Kotlin来就地过滤列表?)。

可变地图有类似的东西吗?

编辑:

我发现entriesMap的属性具有这些方法。

hot*_*key 7

一种选择是在地图的上进行操作keys: MutableSet<K>,您可以在其中使用removeAll { ... }retainAll { ... }就像使用列表一样:

val m = mutableMapOf(1 to "a", 2 to "b")
m.keys.removeAll { it % 2 == 0 }
println(m) // {1=a}
Run Code Online (Sandbox Code Playgroud)

(可运行的示例)

如果仅键不足以作为谓词,则只需对地图的条目集进行相同的操作, entries: MutableSet<MutableEntry<K, V>>

val m = mutableMapOf(1 to "a", 2 to "b", 3 to "c")
m.entries.retainAll { it.key < 3 }
m.entries.removeAll { (k, v) -> k == 1 && v == "a" }
println(m) // {2=b}
Run Code Online (Sandbox Code Playgroud)

(可运行的示例)