初学者scala模式匹配 - 用#分割#b并分配给Map

时间:2013-11-05 23:52:50

标签: scala

我想编写一些执行以下操作的scala代码: -

将[“a#b”,“c#”]的列表转换为地图,其中#为#作为键,而#之后的部分为值,如果该值存在,则为

因此,对于上面的数组,地图将是:

{
 "a" => "b" // no "c" because it does not have a value.
}

用scala风格表达这个最优雅的方式是什么?另外,如何在scala中执行空检查?

谢谢!

1 个答案:

答案 0 :(得分:2)

scala> val list = List("a#b", "c", "d#e", "")

scala> list.map(x => x.split("#")).filter(_.size == 2).map(arr => (arr(0), arr(1))).toMap
res1: scala.collection.immutable.Map[String,String] = Map(a -> b, d -> e)