在Scala 2.8.0中迭代Java Map的新方法是什么?

时间:2010-04-25 16:46:10

标签: scala language-features scala-2.8

scala.collection.JavaConversions如何取代Stack Overflow问题 Iterating over Java collections in Scala 中给出的答案(因为“jcl”包已经消失,它不起作用)和 Iterating over Map with Scala (它在复杂的测试中对我不起作用,我将尝试将其归结并稍后发布)。

后者实际上是一个Scala Map问题,但我认为我需要知道这两个答案才能迭代java.util.Map

1 个答案:

答案 0 :(得分:77)

在2.8中,您导入scala.collection.JavaConversions._并用作Scala地图。这是一个例子(在2.8.0.RC1中):

scala> val jmap:java.util.Map[String,String] = new java.util.HashMap[String,String]  
jmap: java.util.Map[String,String] = {}

scala> jmap.put("Hi","there")
res0: String = null

scala> jmap.put("So","long")
res1: String = null

scala> jmap.put("Never","mind")
res2: String = null

scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._

scala> jmap.foreach(kv => println(kv._1 + " -> " + kv._2))
Hi -> there
Never -> mind
So -> long

scala> jmap.keys.map(_.toUpperCase).foreach(println)
HI
NEVER
SO

如果您特别需要Scala迭代器,请使用jmap.iterator(转换后导入)。