Каков новый способ перебора Java-карты в Scala 2.8.0? - PullRequest
34 голосов
/ 25 апреля 2010

Как scala.collection.JavaConversions заменяет ответы, заданные в вопросе переполнения стека Итерации по коллекциям Java в Scala (это не работает, поскольку пакет "jcl" пропал) в Итерации по карте с помощью Scala (у меня не получится в сложном тесте, который я постараюсь развернуть и опубликовать здесь позже).

Последний на самом деле является вопросом карты Scala, но я думаю, что мне нужно знать оба ответа, чтобы перебрать java.util.Map.

1 Ответ

77 голосов
/ 25 апреля 2010

В 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 (после импорта конверсий).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...