私はScalaにjava.util.Treemap[Long, Int]
を持っています。私が必要とするのは、Treemapの値を配列[Int]に変換することです。ScalaのJava Collection [Int]をArray [Int]に変換する方法
は私がTreeMap
からIterator[Int]
またはCollection[Int]
得ることができますいずれかが、私はArray[Int]
にこれらを変換するかどうかはわかりません。
何か提案がありがとうございます。
私はScalaにjava.util.Treemap[Long, Int]
を持っています。私が必要とするのは、Treemapの値を配列[Int]に変換することです。ScalaのJava Collection [Int]をArray [Int]に変換する方法
は私がTreeMap
からIterator[Int]
またはCollection[Int]
得ることができますいずれかが、私はArray[Int]
にこれらを変換するかどうかはわかりません。
何か提案がありがとうございます。
問題はjava.util.Collection
はすでにそれがスカラ座へArray[AnyRef]
のように見えるInteger[]
を返す理由である、toArray()
方法を持っているということです。 Javaにそのようなメソッドがない場合、JavaConversions
で暗黙的に暗黙のうちに配列を構築する前にIterable[Int]
に変換します。これらは倍以上の約30倍の速さのために、toMap
を使用するなど、
import collection.JavaConversions._
(t.values: Iterable[Int]).toArray
または代わりに私のマシン上で
import collection.JavaConverters._
t.values.asScala.toArray
:だから、明示的coversionを呼び出すか、タイプのヒントを与えることができますいずれか1000エントリのTreeMap。
import collection.JavaConversions._
val treemap = new java.util.TreeMap[Long, Int]()
treemap.put(1,1)
treemap.put(2,2)
treemap.toMap.values.toArray // res0: Array[Int] = Array(1, 2)
これは、ScalaのMap
からTreeMap
を変換した値を取得し、Array
に変換します。 java.util.Collection[Int]
からの暗黙的な変換は、あなたが.toArray
が戻っArray[Object]
あなたを与える呼び出すときので
は残念ながらtreemap.values.toArray
は、トリックを行いません。
私はスカラでは一度も扱いませんでしたが、Javaでは、Collection.toArray()
メソッドを使用してint []を取得しました。
希望すると助かります。
よろしくお願いいたします。 t.values.toArray
と
もう一つのトリックは、タイプヒントを使用する代わりに、 'Iterable [Int]'への暗黙の変換を実行するために暗黙のClassManifest引数を明示的に指定することです: 't.values.toArray(manifest [Int])' –