var chart_values: MutableSet<MutableMap.MutableEntry<String, Any>>? = mutableSetOf()
打印图表值:
[ground={},
ground_level={0=115, 1=4, 2=0, 3=37, 4=63, 5=44, 6=40, 7=9},
ground_over={0=3, 1=3, 2=3, 3=3, 4=3, 5=3, 6=3}
date_of_birth=1988-07-18T00:00Z]
我想从 chart_values
中remove ground={}
答案 0 :(得分:1)
鉴于{
"cheese": [
{
"Id": 2,
"Description": "cheese"
},
],
"spam": [
{
"Id": 1,
"Description": "spam"
},
{
"Id": 3,
"Description": "spam"
},
],
}
的类型为chartValues
,您可以执行以下操作以删除任何以空映射作为值的条目:
MutableSet<MutableMap.MutableEntry<String, Any>>?
chartValues?.removeAll { (_, value) ->
(value as? Map<*, *>)?.isEmpty() == true
}
被称为安全强制转换运算符,它将返回强制转换的对象;如果强制转换失败,则返回null。
注意:
as?
MutableMap<String, Any>
代替val
,因为您要更改集合而不是对其的引用答案 1 :(得分:0)
顺便说一句:
fn main() {
let result: f64 = -10. / 0.;
println!("{}", result.is_infinite()); // true
println!("{}", result == std::f64::INFINITY); // false
println!("{}", result == std::f64::NEG_INFINITY); // true
}
Map<String, Any>
不符合Kotlins的命名方式。使用骆驼套由于值的类型为chart_values
-如果可能,应将其更改为更具体的类型-我们必须先检查实例
Any
编辑
如果某些元素不是集合:
val chart_values: MutableSet<MutableMap.MutableEntry<String, Any>>? = mutableSetOf()
val withoutEmptyValues = chart_values.filter { (_, value) -> value is Collection<*> && value.isNotEmpty() }
测试
我无法创建val withoutEmptyValues = chart_values.filter { (_, value) -> if(value is Collection<*>) value.isNotEmpty() else true }
的实例,所以我创建了一个内部为我做的毛绒手套
MutableMap.MutableEntry
答案 2 :(得分:0)
fun removeMapEntryIfEmpty() {
val iterator: MutableIterator<MutableMap.MutableEntry<String, Any>> =
player.chart_values?.iterator()!!
iterator.forEach {
// it: MutableMap.MutableEntry<String, Any>
if (it.value.toString() == "{}") {
iterator.remove()
}
}
}