7
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
}
4

2 回答 2

24

如果你愿意做一个理解,我喜欢:

for((key, value) <- m) println(key, value)

但假设你想做 m.foreach,我喜欢

 m.foreach{ case (key, value) => println(key, value) }
于 2011-02-07T18:12:42.913 回答
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")
于 2017-05-06T10:15:55.553 回答