如何迭代一个值为列表的地图?

时间:2016-03-31 21:52:26

标签: scala

我正在尝试迭代以下地图

scala> val m1 = Map("key1" -> List(1,2),  "key2" -> List(3,4))

我不确定为什么以下代码以这种方式打印?

scala> m1 foreach {case (key, value) => println (key + "-->" + value .foreach {println} )}
1
2
key1-->()
3
4
key2-->()

我希望得到以下内容

key1 --> 1 2 
key2 --> 3 4 

2 个答案:

答案 0 :(得分:4)

您无法将println嵌套在另一个println中。 println期望字符串作为参数,因此如果您希望列表是以空格分隔的字符串,请使用mkString

scala> val m1 = Map("key1" -> List(1,2),  "key2" -> List(3,4))
m1: scala.collection.immutable.Map[String,List[Int]] = Map(key1 -> List(1, 2), key2 -> List(3, 4))

scala> m1 foreach {case (key, value) => println (key + "-->" + value.mkString(" ") )}
key1-->1 2
key2-->3 4

scala> 

答案 1 :(得分:0)

尝试使用此功能进行理解,提取每个键列表对

for ( (k,xs) <- m1 ) println(k + "->" + xs.mkString(" "))