我有一个包含字符串的Scala数组:
val names:Array[String] = something.map(...)
我需要调用一个接受 Collection 参数的 Android(java) 方法
public void addAll (Collection<? extends T> collection)
我该如何将数组转换为集合(Collection)?
java.util.Arrays.asList(names: _*)
import collection.JavaConversions._
val namesColl: java.util.Collection[String] = names.toSeq
names
数组首先被转换为 Seq[String]
,然后位于 JavaConversions
中的隐式转换会找出所需的 Java 集合,从而透明地应用必要的转换。不用担心,它是常数时间。JavaConversions
已经被弃用。
您应该使用 JavaConverters
代替。
import collection.JavaConverters.asJavaCollection
val collection = asJavaCollection(Array("some value"))
Arrays.asList
创建一个包装器,而toSeq
和隐式转换创建两个包装器。在这两种情况下都不会复制数组,因此时间复杂度是恒定的。所以差异微小,但我同意。 - Tomasz Nurkiewicz