scala - Scala:通过访问多个元素进行迭代
问题描述
我有一个迭代器,它以某种排序顺序包含我需要的所有数据。我想对每个数据元素执行一些操作,考虑到迭代器中的前后元素。即我有一个函数,给定 n 个元素,它f(iter(k-1), iter(k), iter(k+1))
接受0 < k < n-1
.
当然,我不能只遍历迭代器,因为在调用函数时我无法访问 k + 1 元素。
我可以把整个事情做一个列表并使用索引,但这很不雅。Scala 访问这些值的方式是什么?我可以以某种方式用自身和偏移量组成迭代器吗?
解决方案
@ygor 的评论是正确的。
yourIterator.sliding(3)
.collect{ case Seq(prev, current, next) =>
//proceed accordingly
}
请注意,代码不知道哪个是最终的 3 集合。中的最后一个元素yourIterator
永远不会是current
.
推荐阅读
- python - 模板不显示信息 - django
- xml - 如何将自定义 xml 文件中的元素和属性访问到项目的 pom.xml 中?
- angular - 将包含布尔值的对象映射到布尔值
- javascript - Webpack 错误加载 CSS 无法读取未定义的属性“拆分”
- java - 如何处理java中的标志?
- python - 如何使用 matplotlib 在 python 中显示置信区间?
- scala - 使用 ScalaMock 时尝试模拟 DataFrameReader 对象时出错
- javascript - Twitter API 流式传输请求返回 401
- flutter - 如何重置 DragTarget 中的值?
- po - 使用 msgmerge 更新几个文件