什么是Java 的等效Scala构造函数(用于创建不可变的 HashSet
)
new HashSet(c)
这里c
是类型的Collection extends T>
?
我在HashSet
物体中找到的只是apply
.
最简洁的方法是使用++
运算符:
import scala.collection.immutable.HashSet val list = List(1,2,3) val set = HashSet() ++ list
答案分为两部分.第一部分是采用T*的Scala变量参数方法是采用Seq [T]的方法.您告诉Scala使用"seq:_*"将Seq [T]视为参数列表而不是单个参数.
第二部分是将Collection [T]转换为Seq [T].目前还没有一般内置的方法可以在Scala的标准库中进行,但是一种非常简单(如果不一定有效)的方法是通过调用toArray.这是一个完整的例子.
scala> val lst : java.util.Collection[String] = new java.util.ArrayList lst: java.util.Collection[String] = [] scala> lst add "hello" res0: Boolean = true scala> lst add "world" res1: Boolean = true scala> Set(lst.toArray : _*) res2: scala.collection.immutable.Set[java.lang.Object] = Set(hello, world)
请注意,scala.Predef.Set和scala.collection.immutable.HashSet是同义词.