Удалить элемент из MutableMap внутри MutableSet - PullRequest
1 голос
/ 28 сентября 2019
var chart_values: MutableSet<MutableMap.MutableEntry<String, Any>>? = mutableSetOf()

Печать chart_values:

[ground={}, 
ground_level={}, 
date_of_birth=1988-07-18T00:00Z]

Я пытаюсь удалить его с помощью приведенного ниже кода

Activity.player.chart_values.remove('date_of_birth')

вышеприведенная строка показывает ошибку даже без запуска

Type inference failed. The value of the type parameter 
T should be mentioned in input types (argument types, 
receiver type or expected type). Try to specify it explicitly.

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

chart_values ​​ - это MutableSet с элементами типа MutableMap.MutableEntry<String, Any> Таким образом, вы можете удалить из него только MutableMap.MapEntry, а не ключ к записи MutableMap

Вы можете перебрать MutableMap.MapEntry элементы MutableSet, используя итератор , а затем попытаться удалить запись карты с данным ключом.

var chart_values: MutableSet<MutableMap.MutableEntry<String, Any>>? = mutableSetOf()

fun removeMapEntry(mapKey: String): Boolean {
    val iterator: MutableIterator<MutableMap.MutableEntry<String, Any>> = chart_values?.iterator() ?: return false
    iterator.forEach { 
        // it: MutableMap.MutableEntry<String, Any>
        if (mapKey == it.key){
            iterator.remove()
            return true
        }
    }
    return false
}
0 голосов
/ 28 сентября 2019

Не уверен, как работает MutableMap.MutableEntry<String, Any>, но я бы сделал это, используя Pair

var chart_values: MutableSet<Pair<String, Any>> = mutableSetOf()
chart_values.removeIf { it.first == "date_of_birth" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...