我java.util.Treemap[Long, Int]在 Scala 中有一个。我需要做的是将 Treemap 中的值转换为 Array[Int]。
我可以得到一个Iterator[Int]或Collection[Int]从TreeMap,但我不知道如何将它们转换成Array[Int].
任何建议,将不胜感激。
问题t.values.toArray在于它java.util.Collection已经有一个toArray()方法,这就是为什么它返回一个Integer[]看起来像Array[AnyRef]Scala 的方法。如果 Java 没有这样的方法,则隐式 inJavaConversions会Iterable[Int]在构建数组之前将其转换为 an。因此,您可以显式调用覆盖或给出类型提示:
import collection.JavaConversions._
(t.values: Iterable[Int]).toArray
或者
import collection.JavaConverters._
t.values.asScala.toArray
在我的机器上,对于 1000 个条目的 TreeMap,这些速度是 using的两倍多,大约是 30 倍。toMap
我从未使用过 Scala,但在 Java 中,您可以使用Collection.toArray()方法来获取 int[]。
希望有帮助。
问候。
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)
这会将 转换TreeMap为 scala Map,获取值,并将它们转换为Array.
不幸treemap.values.toArray的是,这并没有奏效,因为java.util.Collection[Int]您调用时的隐式转换.toArray会给您返回Array[Object].