可以这么说,我如何访问地图中的单个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 = "
需要做什么来解决这个问题?
答案 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