Moh*_*nan 2 scala scala-collections
在我的主程序中,我收到类似 - key1=value1 key2=value2 的输入
现在我想要的是用它创建一个地图。我知道执行此操作的命令式方法,我将获得可以 foreach 的 Array[String],然后用“=”分割,然后可以使用键和值来形成 Map。
有没有一种好的功能性和可读性的方法来实现这一点?另外,如果我可以避免可变映射并且我想避免初始虚拟值初始化,那就太好了。
def initialize(strings: Array[String]): Unit = {
val m = collection.mutable.Map("dummy" -> "dummyval")
strings.foreach(
s => {
val keyVal:Array[String] = s.split("=")
m += keyVal(0) -> keyVal(1)
})
println(m)
}
Run Code Online (Sandbox Code Playgroud)
你可以只使用toMap()。
然而,从数组转换为元组并不是那么简单: 如何将数组转换为元组?
scala> val ar = Array("key1=value1","key2=value2")
ar: Array[String] = Array(key1=value1, key2=value2)
scala> ar.collect(_.split("=") match { case Array(x,y) => (x,y)}).toMap
res10: scala.collection.immutable.Map[String,String] = Map(key1 -> value1, key2 -> value2)
Run Code Online (Sandbox Code Playgroud)
也许你需要打电话Function.unlift给intellij
val r = ar.collect(Function.unlift(_.split("=") match { case Array(x, y) => Some(x, y)})).toMap
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |