如何迭代scala地图?

我有斯卡拉地图:

attrs: Map[String , String] 

当我尝试遍历地图像;

 attrs.foreach { key, value => } 

以上不起作用。 在每一次迭代中,我都必须知道什么是关键,什么是价值。 用scala语法糖遍历scala映射的正确方法是什么?

foreach方法接收Tuple2[String, String]作为参数,而不是2个参数。 所以你可以像使用元组一样使用它:

 attrs.foreach {keyVal => println(keyVal._1 + "=" + keyVal._2)} 

或者你可以进行模式匹配:

 attrs.foreach {case(key, value) => ...} 

三个选项:

 attrs.foreach( kv => ... ) // kv._1 is the key, kv._2 is the value attrs.foreach{ case (k,v) => ... } // k is the key, v is the value for ((k,v) <- attrs) { ... } // k is the key, v is the value 

诀窍是迭代给你的键值对,你不能分裂成一个键和值标识符的名称,而无需使用case或。