9

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?

Xavier Guihot
  • 54,987
  • 21
  • 291
  • 190
Viacheslav Rodionov
  • 2,335
  • 21
  • 22

3 Answers3

20

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: _*)
serejja
  • 22,901
  • 6
  • 64
  • 72
4

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)
Xavier Guihot
  • 54,987
  • 21
  • 291
  • 190
1
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))
}
Guru
  • 11
  • 1