从Noob到Kotlin。我有一个哈希图,它将保存其中一个键的数组。但是,当我读取该键的值时,Kotlin并未将其识别为数组。
我的哈希图:
var myHashMap = hashMapOf("test" to arrayOf<HashMap<String, Any>>())
读取数组:
var testString = "__ ${myHashMap["test"].count()} __"
尝试读取值时出现类型不匹配错误。我将数组以不正确的方式存储在哈希图中?
我的哈希图是HashMap类型。我现在只是为值指定类型,稍后将动态存储实际值。
因此,稍后阅读myHashMap [“test”]时,我会期待类似[“Hello”:“World”,“ABC”:3]的内容。
编辑:添加我的解决方案
我尝试了一下,现在就可以了,但是检查是否有更好的解决方案。
var tests = task["test"] as ArrayList<HashMap<String, Any>>
var testCount = tests.count()
另外,如果我现在想继续向myHashMap [“test”]中添加值,则将现有值存储到var中,在其中添加新值,然后将其传递给myHashMap [“test”]。
tests.add(someHashMap)
myHashMap["test"] = tests
有什么更快的方法可以做到这一点吗?
最佳答案
通过类型不匹配,您是指以下错误吗?error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Array<kotlin.collections.HashMap<String, Any> /* = java.util.HashMap<String, Any> */>?
如果是这样,则应将表达式更改为"__${myHashMap["test"]?.count()}__"
或"__${myHashMap["test"]!!.count()}__"
,因为myHashMap["test"]
可以求值为空。