What is the equivalent Scala constructor (to create an immutable HashSet) to the Java
new HashSet<T>(c) where c is of type Collection<? extends T>?.
All I can find in the HashSet Object is apply.
There are two parts to the answer. The first part is that Scala variable argument methods that take a T* are a sugaring over methods taking Seq[T]. You tell Scala to treat a Seq[T] as a list of arguments instead of a single argument using "seq : _*".
The second part is converting a Collection[T] to a Seq[T]. There's no general built in way to do in Scala's standard libraries just yet, but one very easy (if not necessarily efficient) way to do it is by calling toArray. Here's a complete example.
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) Note the scala.Predef.Set and scala.collection.immutable.HashSet are synonyms.