Kotlin Hashmap:更改键值和子元素值

Kotlin Hashmap:更改键值和子元素值,kotlin,hashmap,Kotlin,Hashmap,我是Kotlin(和Java)的新手,有一个问题:我有一个名为data的Hashmap。我想更改关键值(例如“训练日1”为“Blablabla”)以及数组列表中的值(例如在训练日2将“Player8”更改为“Player1”)。此外,我想在培训日4中添加一些元素。我该怎么做 val data: HashMap<String, List<String>> get() { val listData = HashMap<String, List<String

我是Kotlin(和Java)的新手,有一个问题:我有一个名为
data
的Hashmap。我想更改关键值(例如
“训练日1”
“Blablabla”
)以及数组列表中的值(例如在
训练日2
“Player8”
更改为
“Player1”
)。此外,我想在
培训日4
中添加一些元素。我该怎么做

val data: HashMap<String, List<String>> get() {
    val listData = HashMap<String, List<String>>()

    val trainingDay1 = ArrayList<String>()
    trainingDay1.add("Player1")
    trainingDay1.add("Player2")
    trainingDay1.add("Player3")
    trainingDay1.add("Player4")
    trainingDay1.add("Player5")
    trainingDay1.add("Player6")
    trainingDay1.add("Player7")

    val trainingDay2 = ArrayList<String>()
    trainingDay2.add("Player8")
    trainingDay2.add("Player9")
    trainingDay2.add("Player10")
    trainingDay2.add("Player11")
    trainingDay2.add("Player12")

    val trainingDay3 = ArrayList<String>()
    trainingDay3.add("Player13")
    trainingDay3.add("Player14")
    trainingDay3.add("Player15")
    trainingDay3.add("Player16")
    trainingDay3.add("Player17")
    trainingDay3.add("Player18")

    val trainingDay4 = ArrayList<String>()

    listData["Training Day 1"] = trainingDay1
    listData["Training Day 2"] = trainingDay2
    listData["Training Day 3"] = trainingDay3
    listData["Training Day 4"] = trainingDay4

    return listData
}
val数据:HashMap get(){
val listData=HashMap()
val trainingDay1=ArrayList()
培训日1.添加(“玩家1”)
培训日1.添加(“玩家2”)
培训日1.添加(“玩家3”)
培训日1.添加(“玩家4”)
培训日1.添加(“玩家5”)
培训日1.添加(“玩家6”)
培训日1.添加(“玩家7”)
val trainingDay2=ArrayList()
培训日2.添加(“玩家8”)
培训日2.添加(“播放者9”)
培训日2.添加(“玩家10”)
培训日2.添加(“玩家11”)
培训日2.添加(“玩家12”)
val trainingDay3=ArrayList()
培训日3.添加(“玩家13”)
培训日3.添加(“玩家14”)
培训日3.添加(“玩家15”)
培训日3.添加(“玩家16”)
培训日3.添加(“玩家17”)
培训日3.添加(“玩家18”)
val trainingDay4=ArrayList()
listData[“培训日1”]=培训日1
listData[“培训日2”]=培训日2
listData[“培训日3”]=培训日3
listData[“培训日4”]=培训日4
返回列表数据
}
我尝试过使用replace和put方法,但它们都不起作用

data.replace("Training Day 1", listOf("Training Day 4"))
data.keys
res45: kotlin.collections.MutableSet<kotlin.String> = [Training Day 1, Training Day 2, Training Day 3, "Training Day 4"]

data.put("Training Day 1", listOf("Player000"))
res40: kotlin.collections.List<kotlin.String>? = ["Player1", "Player2", "Player3", "Player4", "Player5", "Player6", "Player7"]
data.replace(“培训日1”,列表(“培训日4”))
数据密钥
res45:kotlin.collections.MutableSet=[训练日1、训练日2、训练日3,“训练日4”]
数据输入(“训练日1”,列表(“玩家000”))
res40:kotlin.collections.List?=[“Player1”、“Player2”、“Player3”、“Player4”、“Player5”、“Player6”、“Player7”]
我想将关键值(如“培训日1”)更改为 “布拉布拉”)

以及ArrayList中的值(例如,在trainingDay2更改时 “播放者8”至“播放者1”)

此外,我想为培训日4添加一些内容

考虑到您需要经常修改列表,我建议将
数据的类型更改为
HashMap
。然后,您可以按如下所示执行最后两个操作:

//replace
data["Training Day 2"]?.let { 
  it[it.indexOf("Player8")] = "Player1"
}

// add
data["Training Day 4"]?.add("Player19")
我想将关键值(如“培训日1”)更改为 “布拉布拉”)

以及ArrayList中的值(例如,在trainingDay2更改时 “播放者8”至“播放者1”)

此外,我想为培训日4添加一些内容

考虑到您需要经常修改列表,我建议将
数据的类型更改为
HashMap
。然后,您可以按如下所示执行最后两个操作:

//replace
data["Training Day 2"]?.let { 
  it[it.indexOf("Player8")] = "Player1"
}

// add
data["Training Day 4"]?.add("Player19")

使用getValue()方法
data[“Training Day 4”]=data.getValue(“Training Day 4”)+“Player19”
而不是简单地
data[“Training Day 4”]=data[“Training Day 4”]+“Player19”
get将返回一个可为空的值<如果找不到键,code>getValue
将引发异常。通过使用
getValue
简化了答案,否则我必须处理空检查,或者使用不安全!!使用getValue()方法
data[“Training Day 4”]=data.getValue(“Training Day 4”)+“Player19”
而不是简单地
data[“Training Day 4”]=data[“Training Day 4”]+“Player19”
get将返回一个可为空的值<如果找不到键,code>getValue
将引发异常。通过使用
getValue
简化了答案,否则我必须处理空检查,或者使用不安全!!
data["Training Day 4"] = data.getValue("Training Day 4") + "Player19"
//replace
data["Training Day 2"]?.let { 
  it[it.indexOf("Player8")] = "Player1"
}

// add
data["Training Day 4"]?.add("Player19")