Search code examples
scalaimmutabilityscala-collectionsmutable

How to convert a mutable HashMap into an immutable equivalent in Scala?


Inside a function of mine I construct a result set by filling a new mutable HashMap with data (if there is a better way - I'd appreciate comments). Then I'd like to return the result set as an immutable HashMap. How to derive an immutable from a mutable?


Solution

  • scala> val m = collection.mutable.HashMap(1->2,3->4)
    m: scala.collection.mutable.HashMap[Int,Int] = Map(3 -> 4, 1 -> 2)
    
    scala> collection.immutable.HashMap() ++ m
    res1: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 3 -> 4)
    

    or

    scala> collection.immutable.HashMap(m.toSeq:_*)
    res2: scala.collection.immutable.HashMap[Int,Int] = Map(1 -> 2, 3 -> 4)