加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 循环循环

发布时间:2020-12-16 09:15:09 所属栏目:安全 来源:网络整理
导读:我需要遍历一个列表,但循环的方式.我还需要在列表中添加新的元素,并遍历所有元素(旧的和新闻元素),我该怎么做?有没有数据结构? 解决方法 我想也许这是你想要的即使您正在迭代,也可以向列表中添加新元素.该代码是丑陋的,但它似乎工作. import scala.collect
我需要遍历一个列表,但循环的方式.我还需要在列表中添加新的元素,并遍历所有元素(旧的和新闻元素),我该怎么做?有没有数据结构?

解决方法

我想也许这是你想要的即使您正在迭代,也可以向列表中添加新元素.该代码是丑陋的,但它似乎工作.

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读