如何在Kotlin中过滤可变地图

时间:2018-10-15 05:48:28

标签: dictionary kotlin

我想从MutableMap中删除项目,类似于filter
在列表中,我可以使用removeAll { }retainAll { }
(请参见以下问题:How to filter a list in-place with Kotlin?)。

可变地图是否有类似的东西?

编辑:

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

1 个答案:

答案 0 :(得分:4)

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

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

(runnable sample)

如果仅键不足以作为谓词,则只需对地图的输入集{{3​​}}

进行相同的操作
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}

entries: MutableSet<MutableEntry<K, V>>

相关问题