28

java.util.Map [String、Object]をscala.collection.immutable.Map [String、Any]に変換して、元のマップのすべての値(整数、ブール値など)が正しい値に変換されるようにするにはどうすればよいですか? Scalaでうまく機能します。

4

3 に答える 3

36

VonC が言うように、scala.collections.JavaConversion可変コレクションのみをサポートしますが、別のライブラリを使用する必要はありません。可変コレクションは、不変の Map を返すメソッドTraversableOnceを定義するものから派生します。toMap

import scala.collection.JavaConversions._

val m = new java.util.HashMap[String, Object]()
m.put("Foo", java.lang.Boolean.TRUE)
m.put("Bar", java.lang.Integer.valueOf(1))

val m2: Map[String, Any] = m.toMap
println(m2)

これは出力されます

Map(Foo -> true, Bar -> 1)
于 2010-06-27T12:39:32.843 に答える
1

JavaConversionsScala2.8のパッケージは可変コレクションのみを扱います。

ここではscalaj-collectionライブラリが役立つかもしれません。

java.util.Map[A, B]       #asScala: scala.collection.Map[A, B]
                          #asScalaMutable: scala.collection.mutable.Map[A, B]
                          #foreach(((A, B)) => Unit): Unit
于 2010-06-27T12:19:31.113 に答える