相当于 Kotlin HashMap 中的 Iterator.Remove?

the*_*urr 6 kotlin

抱歉,如果这是一个愚蠢的问题——但在java中我习惯做如下的事情:

Iterator whatever = entrySet.iterator()
while (whatever.hasNext()) {
    for (int i = 0; i < 4; i++) {
        if (i == 3) {
            whatever.remove(whatever.next().key)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(伪代码和逻辑毫无意义)

然而,Kotlin 中的 hashmap 不存在“删除”函数。我知道您可以将removeIf用于单个条件,但我想在决定删除哪些内容之前循环遍历一堆不同的条件——所有这些都不会回避并发修改异常。

在 Kotlin 中如何做到这一点?

感谢您的时间!

Kol*_*ode 8

在 Kotlin 中,您可以在可变映射条目上使用removeIf,而无需显式访问迭代器。

val entrySet = HashMap<String, String>()
entrySet.entries.removeIf { 
  // some predicate 
}
Run Code Online (Sandbox Code Playgroud)

将删除与谓词匹配的所有条目

  • “removeIf”需要 API &gt;= 24,因为它来自 java.util.Collection。我们应该使用 kotlin.collections 中的“removeAll(predicate: (T) -&gt; Boolean)”。 (3认同)