2016-03-31 25 views
0

我想通過以下地圖如何遍歷值爲列表的地圖?

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 
+0

我會建議從'Map [A​​,B]'到'List [B]',然後打印。 –

回答

4

不能嵌套在另一個println一個printlnprintln需要一個字符串作爲參數,所以如果你想你的清單是用空格分隔的字符串,請使用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> 
0

嘗試此理解,在那裏你提取每個鍵列表對,

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