Scala地图验证

时间:2017-06-02 09:33:10

标签: scala apache-spark dataframe scala-collections

我的程序收到scala地图,要求是验证此地图(键值对)。例如:验证键值,将其类型从字符串转换为int等。在极少数情况下,我们也会在将映射传递到下层之前更新键。 并不总是需要更新此映射,但仅当我们检测到有任何不受支持的键或值时才需要。 我正在做这样的事情:

private def updateMap(参数:Map [String,String]):Map [String,String] = {

parameters.map{

  case(k,v) => k match { case "checkPool" =>


    (k, (if (k.contains("checkPool"))
      v match {
        case "1" => "true"
        case _ => "false"
      }
    else v))

  case "Newheader" => (k.replace("Newheader","header"),v)
  case _ =>(k,v)
  }


  case _ => ("","")
}

} 像这样,代码增加了进行验证并将键/值转换为支持的值。 有没有更简洁的方法在Scala中为地图进行此验证?

此致

1 个答案:

答案 0 :(得分:0)

根据我从您的问题中理解的内容,match case可以成为您的解决方案

inOptions.map(kv => kv.keySet.contains(STR) match {
  case true => mutable.HashMap(STR_UPDT->kv.get(STR).get)
  case _ => kv
})

<强>被修改

由于您使用更多要求更新了问题,因此简单if else条件匹配似乎是最佳选择。

def updateMap(parameters: Map[String, String]): Map[String, String] = {
  parameters.map(kv => {
    var key = kv._1
    var value = kv._2
    if(key.contains("checkPool")){
      value = if(value.equals("1")) "true" else "false"
    }
    else if(key.contains("Newheader")){
      key = key.replace("Newheader", "header")
    }
    (key, value)
  })
}

您可以添加更多else if条件