HashMap kotlin 中的 ArrayList

ArrayList in HashMap kotlin

如何在HashMap中的ArrayList中添加一些值?我的波纹管代码显示 0 大小的散列

val hash= HashMap<String, ArrayList<String> >()
    hash["bro"]?.add("Ali Umar")
    hash["sis"]?.add("Tamanna")
    hash["bro"]?.add("Faruk")
    hash["sis"]?.add("Aklima")
    hash["bro"]?.add("Ab Siddik")
    Log.d("Hash", hash.size.toString())

您必须先初始化 List 并将键和已初始化 List 放入 HashMap 中,然后才能将更多项添加到键的值中。在您的示例代码中,HashMap 中没有任何内容,也无法添加任何内容。

像这样尝试(或类似)

fun main() {
    // initialize the hashmap
    val hash = hashMapOf<String, MutableList<String>>()
    // put the keys with empty lists into the hashmap
    hash.put("bro", mutableListOf())
    hash.put("sis", mutableListOf())
    // add items to the value (the list) of existing keys
    hash.get("bro")?.add("Ali Umar")
    hash.get("sis")?.add("Tamanna")
    hash.get("bro")?.add("Faruk")
    hash.get("sis")?.add("Aklima")
    hash.get("bro")?.add("Ab Siddik")
    // print size and content
    println("Hash size is ${hash.size.toString()}")
    println(hash)
}

在 Kotlin Playground 中输出

Hash size is 2
{sis=[Tamanna, Aklima], bro=[Ali Umar, Faruk, Ab Siddik]}

问题是下面的指令只是从 hashmap 中读取而不是插入任何东西

hash["bro"]
hash["sis"]

所以当你用 val hash= HashMap<String, ArrayList<String> >() 创建你的 hashmap 时它是空的并且“bro”和“sis”不存在。所以它是 null 并且不会调用 add 函数,因为 ?. 如果值为 null 则跳过执行。

因此,要向兄弟姐妹添加一些内容,您首先必须将值放入哈希图中。

hash.put("bro",ArrayList<String>())
hash.put("sis",ArrayList<String>())

这会将您的示例更改如下

val hash= HashMap<String, ArrayList<String> >()
    hash.put("bro",ArrayList<String>())
    hash.put("sis",ArrayList<String>())
    hash["bro"]?.add("Ali Umar")
    hash["sis"]?.add("Tamanna")
    hash["bro"]?.add("Faruk")
    hash["sis"]?.add("Aklima")
    hash["bro"]?.add("Ab Siddik")
    Log.d("Hash", hash.size.toString())