Javaに相当するScalaコンストラクタ( immutableを作成する)は何ですか? HashSet
new HashSet<T>(c)
c
タイプはどこCollection<? extends T>
ですか?
HashSet
オブジェクトで見つけることができるのはapply
.
Javaに相当するScalaコンストラクタ( immutableを作成する)は何ですか? HashSet
new HashSet<T>(c)
c
タイプはどこCollection<? extends T>
ですか?
HashSet
オブジェクトで見つけることができるのはapply
.
これを行う最も簡潔な方法は、おそらく次の++
演算子を使用することです。
import scala.collection.immutable.HashSet
val list = List(1,2,3)
val set = HashSet() ++ list
答えには2つの部分があります。最初の部分は、T* を取る Scala の可変引数メソッドは、Seq[T] を取るメソッドを甘やかしているということです。"seq : _*" を使用して、Seq[T] を単一の引数ではなく、引数のリストとして扱うように Scala に指示します。
2 番目の部分は、Collection[T] を Seq[T] に変換しています。Scala の標準ライブラリに組み込まれている一般的な方法はまだありませんが、非常に簡単な (必ずしも効率的ではない場合) 方法の 1 つは、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 は同義語であることに注意してください。