Scala Array [String]到Java Collection [String]

Ste*_*eve 12 scala

我有一个Scala数组字符串:

val names:Array[String] = something.map(...)
Run Code Online (Sandbox Code Playgroud)

我需要调用一个接受Collection 的Android(java)方法

public void addAll (Collection<? extends T> collection)
Run Code Online (Sandbox Code Playgroud)

如何将数组转换为集合?

Tom*_*icz 21

Java方法:

java.util.Arrays.asList(names: _*)
Run Code Online (Sandbox Code Playgroud)

Scala方法:

import collection.JavaConversions._

val namesColl: java.util.Collection[String] = names.toSeq
Run Code Online (Sandbox Code Playgroud)

在后一种方法names中,首先将数组转换为Seq[String]然后进行隐式转换,然后在JavaConversions图中指出需要Java集合,因此它会显着地应用必要的转换.别担心,它是及时的.

  • @DanielC.Sobral:据我所知,`Arrays.asList`在`toSeq`和隐式转换时创建了一个包装器 - 两个.在这两种情况下都没有复制数组,因此时间复杂度不变.所以差异很小,但我同意. (2认同)
  • 请问,你能解释"_*"背后的逻辑是什么,它有效,但我不明白.当你输入"name:"时,我猜你是在操作名字,有一种动态集合,然后你还给它,对吗?什么是"姓名:_*"返回?如果Java Arrays与Scala数组相同,为什么不直接工作? (2认同)