Jen*_*der 3 queue foreach scala
foreachScala不可变队列的方法是否总是按照队列所期望的顺序进行处理,还是有一种方法可以保证顺序?或者我必须使用循环+ dequeue?
scala.collection.immutable.Queue是scala.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.所以你将获得相同的元素顺序.