首页 > 解决方案 > Scala:通过访问多个元素进行迭代

问题描述

我有一个迭代器,它以某种排序顺序包含我需要的所有数据。我想对每个数据元素执行一些操作,考虑到迭代器中的前后元素。即我有一个函数,给定 n 个元素,它f(iter(k-1), iter(k), iter(k+1))接受0 < k < n-1.

当然,我不能只遍历迭代器,因为在调用函数时我无法访问 k + 1 元素。

我可以把整个事情做一个列表并使用索引,但这很不雅。Scala 访问这些值的方式是什么?我可以以某种方式用自身和偏移量组成迭代器吗?

标签: scalaiterator

解决方案


@ygor 的评论是正确的。

yourIterator.sliding(3)
            .collect{ case Seq(prev, current, next) =>
              //proceed accordingly
            }

请注意,代码不知道哪个是最终的 3 集合。中的最后一个元素yourIterator永远不会是current.


推荐阅读