Scala相当于新的HashSet(Collection)

时间:2009-03-23 18:05:28

标签: java scala scala-collections

Java的等效Scala构造函数(用于创建不可变的 HashSet)是什么

new HashSet<T>(c)

其中c的类型为Collection<? extends T>

我在HashSet 对象中找到的所有内容都是apply

2 个答案:

答案 0 :(得分:11)

最简洁的方法是使用++运算符:

import scala.collection.immutable.HashSet
val list = List(1,2,3)
val set = HashSet() ++ list

答案 1 :(得分:7)

答案分为两部分。第一部分是采用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是同义词。