Kotlin Hashmap:更改键值和子元素值
我是Kotlin(和Java)的新手,有一个问题:我有一个名为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
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")