在 Scala 2.8.0 中迭代 Java Map 的新方法是什么?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2708990/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What's the new way to iterate over a Java Map in Scala 2.8.0?
提问by Alex R
How does scala.collection.JavaConversionssupercede the answers given in Stack Overflow question 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).
如何scala.collection.JavaConversions取代 Stack Overflow 问题Iterating over Java collections in Scala(它不起作用,因为“jcl”包不见了)和Iterating over Map with Scala 中给出的答案(它在复杂的测试中对我不起作用)稍后我将尝试将其归结并在此处发布)。
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.
后者实际上是一个 Scala Map 问题,但我认为我需要知道两个答案才能迭代java.util.Map.
回答by Rex Kerr
In 2.8, you import scala.collection.JavaConversions._and use as a Scala map. Here's an example (in 2.8.0.RC1):
在 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
If you specifically want a Scala iterator, use jmap.iterator(after the conversions import).
如果您特别想要一个 Scala 迭代器,请使用jmap.iterator(在转换导入之后)。

