Here is example of building immutable Map from colleciton. How to do the same but for mutable? (without converting resulting immutable Map to mutable one)
Asked
Active
Viewed 186 times
-3
-
It would be nice if somebodies leave a comment why they downvoating. :) – Cherry Mar 10 '15 at 12:22
2 Answers
1
scala> :paste
// Entering paste mode (ctrl-D to finish)
val l = List(1,2,3,4)
def f(i:Int ) = (i*10,i)
val m = scala.collection.mutable.Map(l map f : _*)
// Exiting paste mode, now interpreting.
l: List[Int] = List(1, 2, 3, 4)
f: (i: Int)(Int, Int)
m: scala.collection.mutable.Map[Int,Int] = Map(20 -> 2, 40 -> 4, 10 -> 1, 30 -> 3)

Antoine Comte
- 166
- 3
0
scala> val mutableMap = scala.collection.mutable.Map.empty[ String , String ]
mutableMap: scala.collection.mutable.Map[String,String] = Map()
scala> val myList = (1 to 10).toList
myList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> myList.foreach( i => mutableMap += ( i.toString -> ( i * i ).toString ) )
scala> mutableMap
res6: scala.collection.mutable.Map[String,String] = Map(2 -> 4, 5 -> 25, 8 -> 64, 7 -> 49, 1 -> 1, 4 -> 16, 6 -> 36, 9 -> 81, 10 -> 100, 3 -> 9)
// you can also do this by using _* annotation as follows
// first create a immutable map
scala> myList.map( i => ( i.toString -> ( i * i ).toString ) )
res7: scala.collection.immutable.Map[String,String] = Map(2 -> 4, 5 -> 25, 8 -> 64, 7 -> 49, 1 -> 1, 4 -> 16, 6 -> 36, 9 -> 81, 10 -> 100, 3 -> 9)
// then feed the elements of this map as *-parameter argument
scala> scala.collection.mutable.Map( res7: _* )
res7: scala.collection.mutable.Map[String,String] = Map(2 -> 4, 5 -> 25, 8 -> 64, 7 -> 49, 1 -> 1, 4 -> 16, 6 -> 36, 9 -> 81, 10 -> 100, 3 -> 9)

sarveshseri
- 13,738
- 28
- 47