在我的主程序中,我收到的输入如下 - key1 = value1 key2 = value2
现在我想要的是从中创建一个地图。我知道执行此操作的必要方法,我将获得可以foreach的Array [String],然后通过" ="然后键和值可用于形成Map。
是否有良好的功能和可读方式来实现这一目标? 如果我可以避免可变的Map并且我想避免初始Dummy值初始化,那将是很好的。
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)
}
答案 0 :(得分:2)
您可以使用toMap()。
但是,从数组转换为元组并不是很简单: How to convert an Array to a Tuple?
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)
也许您必须为intellij
致电Function.unlift
val r = ar.collect(Function.unlift(_.split("=") match { case Array(x, y) => Some(x, y)})).toMap
答案 1 :(得分:1)
与上述相似,但只使用'map'
ar.map(_.split("=")).map(a=>(a(0), a(1))).toMap
答案 2 :(得分:0)
您可以使用Scopt以简洁的方式进行命令行参数解析。