2016-03-31 7 views
0

Ich versuche, durch die folgende KarteWie man durch eine Karte mit Wert als Liste iteriert?

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

Ich bin nicht sicher, warum die folgende Code druckt diese Art und Weise zu wiederholen?

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

Ich hatte gehofft, die folgende

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

Ich würde vorschlagen, von 'Map [A, B]' zu 'List [B]' zu gehen und dann zu drucken. –

Antwort

4

können nicht verschachtelt ein println innerhalb eines anderen println zu erhalten. println erwartet einen String als Argument, so dass, wenn Sie Ihre Liste wollen mkString eine durch Leerzeichen getrennte Zeichenfolge verwenden:

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

die Sie interessieren für das Verständnis, wo Sie jede Taste-Liste Paar extrahieren,

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