如何在Map [String,(String,String)]中访问地图的各个值

时间:2018-06-21 09:04:22

标签: scala

可以这么说,我如何访问地图中的单个values。地图的类型为Map[String,(String, String)]。根据输入字符串,如果参数与键匹配,我想返回value(String1)value(String2),或者在不匹配的情况下返回参数本身,

val mappeddata = Map("LOWES" -> ("Lowes1","Lowes2"))

已更新。 下面的方法可以在所有值都不为空的情况下工作

scala> mappeddata.find(_._1 == "LOWES").map(_._2._2).getOrElse("LOWES")
res135: Option[String] = Some(Lowes2)

scala> mappeddata.find(_._1 == "LOWES").map(_._2._1).getOrElse("LOWES")
res136: Option[String] = Some(Lowes1)

但是如果值是空的,我想返回输入字符串本身,但返回的是null

scala> val mappeddata = Map("LOWES" -> ("Lowes1",""))
mappeddata: scala.collection.immutable.Map[String,(String, String)] = Map(LOWES -> (Lowes1,""))

scala> mappeddata.find(_._1 == "LOWES").map(_._2._2).getOrElse("LOWES")
res140: String = "

需要做什么来解决这个问题?

3 个答案:

答案 0 :(得分:0)

基本上,您要求获取Map的值部分。在下面的示例中,我正在提取Lowes2。

undefined

答案 1 :(得分:0)

这有效。

scala>  if (mappeddata.get("LOWES").get._1.isEmpty) "LOWES" else mappeddata.get("LOWES").get._1
res163: String = Lowes1

scala> if (mappeddata.get("LOWES").get._2.isEmpty) "LOWES" else mappeddata.get("LOWES").get._2
res164: String = LOWES

// 已更新

 scala>  if (mappeddata("LOWES")._1.isEmpty) "LOWES" else mappeddata("LOWES")._1
    res163: String = Lowes1

    scala> if (mappeddata("LOWES")._2.isEmpty) "LOWES" else mappeddata("LOWES")._2
    res164: String = LOWES

答案 2 :(得分:0)

不确定您想要什么,但这可能会有所帮助:

val m = Map[String, (String, String)]() 
val value = m("first") // value if exists or throws exception
val value: Option[(String, String)] = m.get("first")// as an option 
val values: List[(String, String)] = m.map(_._2).toList // list of values