List Scala迭代元组映射

List Scala迭代元组映射,list,scala,map,iterator,List,Scala,Map,Iterator,我有一个键值对的映射,我正在尝试获取给定键值的值,但是尽管它返回了一个值,但它附带了一些值,你知道我如何摆脱它吗? 我的代码是: val jsonmap = simple.split(",\"").toList.map(x => x.split("\":")).map(x => Tuple2(x(0), x(1))).toMap val text = jsonmap.get("text") 其中“text”是键,我想要它映射到的值,我当前得到以下输出: Some("4evereve

我有一个键值对的映射,我正在尝试获取给定键值的值,但是尽管它返回了一个值,但它附带了一些值,你知道我如何摆脱它吗? 我的代码是:

val jsonmap = simple.split(",\"").toList.map(x => x.split("\":")).map(x => Tuple2(x(0), x(1))).toMap
val text = jsonmap.get("text")
其中“text”是键,我想要它映射到的值,我当前得到以下输出:

Some("4everevercom")    

我尝试使用flatMap而不是Map,但它也不起作用。

您可以使用
getOrElse
,如果有一个值或您指定的默认值,它将获取
Some
的值。如果该键存在于地图中,您将从
Some
中获取值。如果密钥不存在,您将获得指定的值

scala> val map = Map(0 -> "foo")
map: scala.collection.immutable.Map[Int,String] = Map(0 -> foo)

scala> map.get(0)
res3: Option[String] = Some(foo)

scala> map.getOrElse(1, "bar")
res4: String = bar
此外,有关Scala的“有”和“无”选项的信息,请参见此部分:

您可以使用getOrElse、as或“apply”方法,自己处理缺少的值:

val text: String = jsonmap("text")
// would trow java.util.NoSuchElementException, if no key presented
此外,您可以设置一些默认值,以便在未找到键的情况下,Map可以回退到该值:

val funkyMap = jsonmap.get("text").withDefaultValue("")
funkyMap("foo")
// if foo or any other key is not presented in map, "" will be returned

如果您想为所有缺少的键设置默认值,请使用它。

您正在寻找
apply
方法
Seq
Set
Map
实现不同的
apply
方法,这是每种方法的主要区别

作为一种语法糖,
.apply
可以在
o.apply(x)
中省略,因此您只需执行以下操作:

val text = jsonmap("text") // pass "key" to apply and receive "value"
对于
Seq
apply
获取索引并返回值,正如您在自己的示例中所使用的:

x(0), x(1)

对于
应用
获取一个值,并返回一个
布尔值
,只提供了一些附加选项,可以帮助您使用
选项
和标准库中的其他类似结构

您还可以迭代(映射)该选项。这是因为
选项
是一个包含零或一个元素的
Iterable

myMap.get(key) map { value =>
  // use value...
}
同样地,如果您觉得使用
可以获得更清晰的代码,则可以使用

for (value <- myMap.get(key)) {
  // use value...
}
用于(值)