Queue.foreach是否正确订购?

Jen*_*der 3 queue foreach scala

foreachScala不可变队列的方法是否总是按照队列所期望的顺序进行处理,还是有一种方法可以保证顺序?或者我必须使用循环+ dequeue

sen*_*nia 6

scala.collection.immutable.Queuescala.collection.Seq.见Seq 文档:

序列是类Iterable的可迭代集合的特例.与iterables不同,序列始终具有已定义的元素顺序.

所以,是的,你将获得foreach与循环+ 相同的元素顺序dequeue.

如果您不信任文档,可以查看实现:

Queue#foreach是继承IterableLike实现如下:

def foreach[U](f: A => U): Unit = iterator.foreach(f)
Run Code Online (Sandbox Code Playgroud)

Queue#iterator实现这样的:

override def iterator: Iterator[A] = (out ::: in.reverse).iterator
Run Code Online (Sandbox Code Playgroud)

Queue#dequeue 返回第一个元素(out如果有)或最后一个元素in.所以你将获得相同的元素顺序.