开发者

What's the new way to iterate over a Java Map in Scala 2.8.0?

开发者 https://www.devze.com 2022-12-27 22:07 出处:网络
How does scala.collection.JavaConversions supercede the answers given in Stack Overflow question 开发者_JS百科Iterating over Java collections in Scala (it doesn\'t work because the \"jcl\" package is

How does scala.collection.JavaConversions supercede the answers given in Stack Overflow question 开发者_JS百科Iterating over Java collections in Scala (it doesn't work because the "jcl" package is gone) and in Iterating over Map with Scala (it doesn't work for me in a complicated test which I'll try to boil down and post here later).

The latter is actually a Scala Map question, but I think I need to know both answers in order to iterate over a java.util.Map.


In 2.8, you import scala.collection.JavaConversions._ and use as a Scala map. Here's an example (in 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

If you specifically want a Scala iterator, use jmap.iterator (after the conversions import).

0

精彩评论

暂无评论...
验证码 换一张
取 消