Queue.foreach是否正确订购?

时间:2013-12-13 05:43:30

标签: scala foreach queue

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

1 个答案:

答案 0 :(得分:5)

scala.collection.immutable.Queuescala.collection.Seq。请参阅Seq documentation

  

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

所以,是的,您将使用foreach和循环+ dequeue获得相同的元素顺序。

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

Queue#foreach继承自IterableLikeimplemented,如下所示:

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的最后一个元素。所以你会得到相同的元素顺序。