[英]How to make a Map with default values if key is not present?
我想建立一個解析對象列表的數組映射。 當已經添加了該映射的索引時,我需要添加之前未添加的數組元素,否則我需要在Map中創建新元素。
假設我們有一個csv,其中包含這樣的數據
names,nicknames
Tom,tommy;timmy
Sam,sammy
Tom,timmy;mymen
我想要這樣的地圖:
Map["Tom"] = ["tommy", "timmy", "mymen"]
Map["Sam"] = ["sammy"]
我很驚訝沒有該功能
有什么用,但是應該改進? (我有40萬行CSV要解析)
val myObjectList: List<myObject> = beans.parse() /* importing POJOs from csv*/
val myMap: MutableMap<String,List<String>> = mutableMapOf()
myObjectList.forEach { entry ->
if ( myMap[entry.name].isNullOrEmpty()) {
myMap[entry.name] = entry.nicknames.split(";")
} else {
myMap[entry.name]!!.plus(entry.nicknames.split(";"))
}
}
return myMap
使用getOrPut
像這樣:
data class MyObject(
val name: String,
val nicknames: String
)
fun main() {
val myObjectList = listOf(
MyObject("primary", "secondary1;secondary2"),
MyObject("primary", "secondary3")
)
val nameToNicks = mutableMapOf<String, MutableList<String>>()
myObjectList.forEach { myObj ->
nameToNicks.getOrPut(myObj.name, {mutableListOf()}) .addAll(myObj.nicknames.split(";"))
}
print(nameToNicks)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.