val m: java.util.Map[String, Int] = ...
m.foreach { entry =>
val (key, value) = entry
// do stuff with key and value
}
有没有更好的方法来解构Map.Entry?我尝试了以下方法,但它没有编译:
m.foreach { (key, value) =>
// do stuff with key and value
}
答案 0 :(得分:21)
如果你愿意做一个理解,我喜欢:
for((key, value) <- m) println(key, value)
但假设你想做m.foreach,我喜欢
m.foreach{ case (key, value) => println(key, value) }
答案 1 :(得分:1)
这回答了一个相关的问题:如何将Java迭代器(在本例中,通过java.util.Map.Entry)转换为Scala迭代器。
import scala.collection.JavaConverters._
import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.node.{JsonNodeFactory, MissingNode, ObjectNode}
val jf = new JsonFactory(true)
val o = new ObjectNode(jf)
o.put("yellow","banana")
for (v <- o.fields.asScala) { println(v.getKey(),v.getValue()) }
打印出来
(yellow,"banana")