删除MutableMap的第一个元素

时间:2018-08-29 09:12:24

标签: android kotlin

具有这样的可变地图

val orders: MutableMap<Int, MutableList<MenuItem>>

如何删除第一个元素或通过过滤器删除所有元素?

2 个答案:

答案 0 :(得分:1)

关于“通过过滤器全部删除”,您可能会对以下其中一项感兴趣:

orders.entries.removeIf { /* your predicate */ }
orders.values.removeIf { /* your predicate */ }
orders.keys.removeIf { /* your predicate */ }
// and/or the extension function removeAll:
orders.entries.removeAll { /* your predicate */ }
orders.values.removeAll { /* your predicate */ }
orders.keys.removeAll { /* your predicate */ }

关于删除第一个,我假设您只想删除任何(但最多为1个)匹配元素(而不是Map中的实际第一个)。您可能只需要进行迭代/过滤,先进行过滤,然后只需调用remove ...,例如:

val yourMatchingEntry = orders.entries.first { /* your predicate */ }
        .also { orders.entries.remove(it) }

这将仅返回与您的谓词匹配的任何(除1个)映射条目。

答案 1 :(得分:0)

我需要从地图中删除一定数量的元素-无关紧要。这对我有用:

orders.remove(orders.keys.first())

要删除所有与过滤器匹配的内容,@ Roland提供了可以使用的各种API。 例如删除所有具有空列表作为值的条目:

orders.entries.removeAll { it.value.isEmpty() }