Преобразовать массив в изменяемый набор в Scala? - PullRequest
12 голосов
/ 08 июля 2011

Как преобразовать Scala Array в mutable.Set?

Легко преобразовать в immutable.Set:

Array(1, 2, 3).toSet

Но я не могу найтиочевидный способ конвертировать в mutable.Set.

Ответы [ 3 ]

19 голосов
/ 08 июля 2011
scala> val s=scala.collection.mutable.Set()++Array(1,2,3)
s: scala.collection.mutable.Set[Int] = Set(2, 1, 3)
11 голосов
/ 08 июля 2011
scala> scala.collection.mutable.Set( Array(1,2) :_* )
res2: scala.collection.mutable.Set[Int] = Set(2, 1)

Странный тип :_*, заставляющий фабричный метод видеть массив как список аргументов.

6 голосов
/ 21 ноября 2016

Начиная с Scala 2.10, через заводских строителей, применяемых с .to(factory):

Array(1, 2, 3).to[collection.mutable.Set]
// collection.mutable.Set[Int] = Set(1, 2, 3)

И начиная с Scala 2.13:

Array(1, 2, 3).to(collection.mutable.Set)
// collection.mutable.Set[Int] = HashSet(1, 2, 3)
...