将选项[List[String]]转换为列表[String]

将选项[List[String]]转换为列表[String],list,scala,List,Scala,如何在Scala中将选项[List[String]]转换为列表[String]?我试图从ScalaMap中获取一个值,其中键是String,值是List[String]。 但是,当我获取键的值时,它将作为选项[List[String]]返回选项可以通过调用toList将其转换为一个列表,然后您可以展平将列表转换为单个列表: map.get(key).toList.flatten 这将返回列表[字符串]。如果您试图检索地图中不存在的密钥,它将返回一个空列表。选项可以通过调用toList将其转换为

如何在Scala中将
选项[List[String]]
转换为
列表[String]
?我试图从Scala
Map
中获取一个值,其中键是
String
,值是
List[String]

但是,当我获取键的值时,它将作为
选项[List[String]]返回
选项
可以通过调用
toList
将其转换为一个列表,然后您可以
展平
将列表转换为单个列表:

map.get(key).toList.flatten

这将返回
列表[字符串]
。如果您试图检索地图中不存在的密钥,它将返回一个空列表。

选项
可以通过调用
toList
将其转换为列表,然后您可以
展平
将列表转换为单个列表:

map.get(key).toList.flatten

这将返回
列表[字符串]
。如果您试图检索映射中不存在的键,它将返回一个空列表。

您也可以在映射上使用
getOrElse()
方法,如:

map.get(key).getOrElse(List.empty[String])
getOrElse()
方法在映射中存在
键时返回实际列表[String],否则将返回
空列表[String]


在这里使用
getOrElse()
方法的一个优点是它使您的代码更具可读性

您还可以在地图上使用
getOrElse()
方法,如:

map.get(key).getOrElse(List.empty[String])
getOrElse()
方法在映射中存在
键时返回实际列表[String],否则将返回
空列表[String]

在这里使用
getOrElse()
方法的一个优点是它使代码更具可读性

最好的解决方案是

map.getOrElse(key, Nil)
如果您的代码在
Try
或其他异常处理程序中,或者如果您可以证明密钥在那里,那么这是另一种选择

map(key)
最好的解决办法是

map.getOrElse(key, Nil)
如果您的代码在
Try
或其他异常处理程序中,或者如果您可以证明密钥在那里,那么这是另一种选择

map(key)

Map
有一个
getOrElse
方法,比这样分两步更有效。
Map
有一个
getOrElse
方法,比这样分两步更有效。问题不应该是如何获取列表。它返回一个选项,因为没有其他正常路径。您首先需要回答如果键不存在,值应该是什么。问题不应该是如何获取列表。它返回一个选项,因为没有其他正常路径。如果键不存在,您首先需要回答值应该是什么。