我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]
.