user test
user test

Reputation: 13

Convert an ArrayBuffer[Map[String,String]] to Array[Map[String,String]] in Scala

How can I convert an ArrayBuffer of Maps(String,String) to an Array of Maps(String, String) in Scala using toArray()?

ArrayBuffer(Map("x1" -> "x", "y1" -> "y"), Map("x2" -> "x", "y2" -> "y"))

to

Array(Map("x1" -> "x", "y1" -> "y"), Map("x2" -> "x", "y2" -> "y"))

Upvotes: 0

Views: 4999

Answers (2)

nomadSK25
nomadSK25

Reputation: 2594

If you want Scala's immutable Array and immutable Map then

import scala.collection.mutable.ArrayBuffer    
ArrayBuffer(Map("x1" -> "x", "y1" -> "y"), Map("x2" -> "x", "y2" -> "y")).toArray

Upvotes: 1

prayagupadhyay
prayagupadhyay

Reputation: 31192

ArrayBuffer is mutable data sturcture. you can call .toArray to convert it to immutable Array

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer

scala> ArrayBuffer(Map("x1" -> "x", "y1" -> "y"), Map("x2" -> "x", "y2" -> "y"))
res1: scala.collection.mutable.ArrayBuffer[scala.collection.immutable.Map[String,String]] = ArrayBuffer(Map(x1 -> x, y1 -> y), Map(x2 -> x, y2 -> y))

now call .toArray,

scala> res1.toArray
res2: Array[scala.collection.immutable.Map[String,String]] = Array(Map(x1 -> x, y1 -> y), Map(x2 -> x, y2 -> y))

See the definition for toArray which returns Array[B],

scala> res1.toArray
   def toArray[B >: scala.collection.immutable.Map[String,String]](implicit evidence$1: scala.reflect.ClassTag[B]): Array[B]

Upvotes: 3

Related Questions