从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"]可以求值为空。

10-06 09:36