具有这样的可变地图
val orders: MutableMap<Int, MutableList<MenuItem>>
如何删除第一个元素或通过过滤器删除所有元素?
答案 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() }