web-dev-qa-db-ja.com

Java.util.Map [String、Object]をscala.collection.immutable.Map [String、Any]に変換します

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

27
IttayD

VonCが言うように、scala.collections.JavaConversionは可変コレクションのみをサポートしますが、別のライブラリを使用する必要はありません。可変コレクションは、不変マップを返す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)
35
Michel Krämer

変換Java.util.Map [String、Object]をscala.collection.immutable.Map [String、Object]に変換するには、Scala Project andcleanで以下のステートメントを単純にインポートする必要があります。ビルドします。

import collection.JavaConversions._

以下のコードを参照してください。

var empMap= Map[String.Object]()
var emp= new Employee(empMap)  // Employee is Java  POJO in which,passing scala map  to overloaded constructor for setting default values.
1
Dinesh Shinkar

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

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
1
VonC