如果我在字符串中有一些文字,如:
“ABC = 123,DEF = 456,GHI = 789”
如何在Kotlin中最简单,最短的代码中为它创建一个填充的HashMap<String,Int>
对象?
答案 0 :(得分:17)
我认为没有比这更简单的解决方案了:
val s = "abc=123,def=456,ghi=789"
val map = s.split(",").associate {
val (left, right) = it.split("=")
left to right.toInt()
}
或者,如果您只需要HashMap
,请使用.associateTo(HashMap()) { ... }
。
一些细节:
.associate { ... }
接收一个产生对的函数,然后分别作为键和值存储到映射中。
val (left, right) = it.split("=")
是从destructuring declarations返回的列表中使用it.split("=")
,它从列表中选择前两项。
left to right.toInt()
创建了一个定义单个映射的Pair<String, Int>
。
答案 1 :(得分:0)
您可以使用Pair
关键字将每个键/值映射到to
。可以使用Pair
扩展方法将toMap()
的可迭代对象轻松映射到Map。
val s = "abc=123,def=456,ghi=789"
val output = s.split(",")
.map { it.split("=") }
.map { it.first() to it.last().toInt() }
.toMap()