Преобразование неизменяемых коллекций в изменяемые

#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)