2016-03-31 13 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-->() 

私はあなたが巣別printlnprintlnをすることはできません、次の

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

私は 'Map [A​​、B]'から 'List [B]'に行くことをお勧めします。 –

答えて

4

を得るために期待していました。 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> 
0

を使用すると、各キー・リストのペアを抽出し、理解、これを試してみてください、

for ((k,xs) <- m1) println(k + "->" + xs.mkString(" ")) 
関連する問題