#scala #collections #immutability #mutable
#scala #Коллекции #неизменяемость #изменяемый
Вопрос:
Каков наилучший способ преобразования collection.immutable.Set
в collection.mutable.Set
?
Ответ №1:
scala> var a=collection.mutable.Set[Int](1,2,3)
a: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> var b=collection.immutable.Set[Int](1,2,3)
b: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
scala> collection.mutable.Set(b.toArray:_*)
res0: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> collection.mutable.Set(b.toSeq:_*)
res1: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
scala> collection.mutable.Set(b.toList:_*)
res2: scala.collection.mutable.Set[Int] = Set(1, 2, 3)
Комментарии:
1. Какая из трех коллекций лучше?
2. Без сомнения, это одна из главных неприятностей Scala.
Ответ №2:
Запуск Scala 2.13
с помощью factory builders, примененных с .to(factory)
:
Set(1, 2, 3).to(collection.mutable.Set)
// collection.mutable.Set[Int] = HashSet(1, 2, 3)
Перед Scala 2.13
и запуском Scala 2.10
:
Set(1, 2, 3).to[collection.mutable.Set]
// collection.mutable.Set[Int] = Set(1, 2, 3)