【问题标题】:How to iterate twice using iterator method in scala如何在scala中使用迭代器方法迭代两次
【发布时间】:2015-01-29 21:13:01
【问题描述】:
// iteratorFunc is Iterable[SomeClass]
val iterator1 = iteratorFunc.iterator

iterator1 foreach {
    ...
}


val iterator2 = iteratorFunc.iterator

iterator2 foreach {
   ...
}

iterator1 foreach里面的代码已经成功完成。但是, iterator2 给出了空的迭代器。

请帮忙。

【问题讨论】:

  • iteratorFunc的类型是什么?你说Iterable,但我怀疑它的iterator 方法坏了。 iterator1 eq iterator2 有可能吗?因为那么显然存在错误。迭代器只能消费一次。
  • @0__ 你应该为它写一个答案,我认为这也是iteratorFunc 的一个错误。

标签: scala scala-2.11


【解决方案1】:

你应该duplicate它。

val (iterator1, iterator2) = iteratorFunc.iterator.duplicate

【讨论】:

    【解决方案2】:

    好吧,使用duplicate() 非常昂贵,因为next() 函数是同步的。您还需要缓存这两个迭代器之间的差异。

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多