Scala 如何遍历值为list的映射?
我正在尝试遍历下面的映射Scala 如何遍历值为list的映射?,scala,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-->() 我希望得到以下信息
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
不能将一个
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>
不能将一个
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>
试着理解一下,在这里你可以提取每个密钥列表对
for ( (k,xs) <- m1 ) println(k + "->" + xs.mkString(" "))
对于((k,xs)请尝试以下理解方法,提取每个密钥列表对
for ( (k,xs) <- m1 ) println(k + "->" + xs.mkString(" "))
对于((k,xs)我建议从映射[A,B]
到列表[B]
,然后打印。我建议从映射[A,B]
到列表[B]
,然后打印。