我需要遍历一个List但以循环方式进行迭代。我也需要向列表中添加新元素并遍历所有元素(旧元素和新闻元素),我该怎么做?有没有适合他们的数据结构?
最佳答案
我想也许这就是您想要的;即使在迭代过程中也可以将新元素添加到列表中。该代码很难看,但似乎可以正常工作。
import scala.collection.mutable.Queue
class Circular[A](list: Seq[A]) extends Iterator[A]{
val elements = new Queue[A] ++= list
var pos = 0
def next = {
if (pos == elements.length)
pos = 0
val value = elements(pos)
pos = pos + 1
value
}
def hasNext = !elements.isEmpty
def add(a: A): Unit = { elements += a }
override def toString = elements.toString
}
您可以像这样使用它:
scala> var circ = new Circular(List(1,2))
res26: Circular[Int] = Queue(1,2)
scala> circ.next
res27: Int = 1
scala> circ.next
res28: Int = 2
scala> circ.next
res29: Int = 1
scala> circ.add(5)
scala> circ.next
res30: Int = 2
scala> circ.next
res31: Int = 5
scala> circ
res32: Circular[Int] = Queue(1,2,5)
关于scala - 循环迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3256169/