Как отфильтровать изменяемую карту в Котлине - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы удалить элементы из MutableMap, аналогично filter.
В списке я могу использовать removeAll { } и retainAll { }
(см. Этот вопрос: Как отфильтроватьсписок на месте с Kotlin? ).

Есть ли что-то похожее для изменяемых карт?

РЕДАКТИРОВАТЬ:

Я обнаружил, что свойство entries Map имеет эти методы.

1 Ответ

0 голосов
/ 15 октября 2018

Один из вариантов будет работать с keys: MutableSet<K> карты, где вы можете использовать removeAll { ... } или retainAll { ... }, как если бы вы использовали список:

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

(запускаемый образец)

Если для предиката недостаточно просто ключей, вы можете просто сделать то же самое с набором записей карты, 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}

(пригодный для работы образец)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...