【发布时间】:2018-05-09 22:34:37
【问题描述】:
我有一个 Scala 字符串数组:
val names:Array[String] = something.map(...)
我需要调用一个接受 Collection 的 Android(java)method
public void addAll (Collection<? extends T> collection)
如何将数组转换为集合?
【问题讨论】:
标签: scala
我有一个 Scala 字符串数组:
val names:Array[String] = something.map(...)
我需要调用一个接受 Collection 的 Android(java)method
public void addAll (Collection<? extends T> collection)
如何将数组转换为集合?
【问题讨论】:
标签: scala
java.util.Arrays.asList(names: _*)
import collection.JavaConversions._
val namesColl: java.util.Collection[String] = names.toSeq
在后一种方法中,names 数组首先转换为 Seq[String],然后位于 JavaConversions 中的隐式转换发现需要 Java 集合,因此它透明地应用了必要的转换。别担心,it is constant in time。
【讨论】:
Arrays.asList 创建了一个包装器,而toSeq 和隐式转换 - 两个。在这两种情况下,都没有复制数组,因此时间复杂度恒定。所以差异很小,但我同意。
JavaConversions 现已弃用。
你应该改用JavaConverters。
import collection.JavaConverters.asJavaCollection
val collection = asJavaCollection(Array("some value"))
【讨论】: