Ich habe eine Scala-Karte:
attrs: Map[String , String]
Wenn ich versuche, über Karte wie zu iterieren;
attrs.foreach { key, value => }
das obige funktioniert nicht. In jeder Iteration muss ich wissen, was der Schlüssel und was der Wert ist. Was ist der richtige Weg, um mit syntaktischem Scala-Zucker über die Scala-Karte zu iterieren?
Drei Optionen:
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
Der Trick besteht darin, dass Sie durch Iteration Schlüssel-Wert-Paare erhalten, die Sie ohne Verwendung von
case
oder nicht in einen Schlüssel- und Wert-ID-Namen aufteilen könnenfor
.quelle
Ich habe einige weitere Möglichkeiten zum Iterieren von Kartenwerten hinzugefügt.
// Traversing a Map def printMapValue(map: collection.mutable.Map[String, String]): Unit = { // foreach and tuples map.foreach( mapValue => println(mapValue._1 +" : "+ mapValue._2)) // foreach and case map.foreach{ case (key, value) => println(s"$key : $value") } // for loop for ((key,value) <- map) println(s"$key : $value") // using keys map.keys.foreach( key => println(key + " : "+map.get(key))) // using values map.values.foreach( value => println(value)) }
quelle