Scala不可变队列的foreach
方法是否总是按照队列所期望的顺序进行处理,还是有一种方法可以保证顺序?或者我是否必须使用循环+ dequeue
?
答案 0 :(得分:5)
scala.collection.immutable.Queue
是scala.collection.Seq
。请参阅Seq
documentation:
序列是类Iterable的可迭代集合的特例。与iterables不同,序列始终具有已定义的元素顺序。
所以,是的,您将使用foreach
和循环+ dequeue
获得相同的元素顺序。
如果您不信任文档,可以查看实现:
Queue#foreach
继承自IterableLike
和implemented,如下所示:
def foreach[U](f: A => U): Unit = iterator.foreach(f)
Queue#iterator
是这样的implemented:
override def iterator: Iterator[A] = (out ::: in.reverse).iterator
Queue#dequeue
returns out
的第一个元素(如果有)或in
的最后一个元素。所以你会得到相同的元素顺序。