简体   繁体   中英

Convert Seq or List to collection.immutable.Queue

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?

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: _*)
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))
}

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM