Question

I wonder, if there is a standard and short way to convert Sequence to immutable Queue in Scala?

I did not find a magic method in documentation.

Right now I'm doing it like this:

def toQueue[A](s: Seq[A]): Queue[A] = s match {
  case x +: xs => x +: toQueue(xs)
  case _ => Queue.empty[A]
}                                         

But is there anything more convenient?

Was it helpful?

Solution

Why not use s: _*?

val s = List(1, 2, 3) // or Seq(1, 2, 3), as you wish
val queue = scala.collection.immutable.Queue(s: _*)

OTHER TIPS

Starting Scala 2.13, via factory builders applied with .to(factory):

List(1, 2, 3).to(collection.immutable.Queue)
// collection.immutable.Queue[Int] = Queue(1, 2, 3)

Prior to Scala 2.13 and starting Scala 2.10:

List(1, 2, 3).to[collection.immutable.Queue]
// collection.immutable.Queue[Int] = Queue(1, 2, 3)
var s=new scala.collection.mutable.Queue[Any];
var li:List[Any]=List(1,'a',"bing",4,7,9,'j');
for(i<-0 to li.length-1)
{
    s.+=(li(i))
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top