Convert Seq or List to collection.immutable.Queue

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

I did not find the magic method in the documentation.

Right now I am 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?

+9
collections scala queue
source share
3 answers

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: _*) 
+20
source share
 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)) } 
+1
source share

Starting with Scala 2.13 , through the factory builders used 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 the launch of Scala 2.10 :

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

All Articles