我可以得到具有更大滑动窗口的字符迭代器吗?java/scala

我可以得到具有更大滑动窗口的字符迭代器吗?java/scala,java,scala,Java,Scala,我正在处理一个scalaBufferedSource文件,它有一个iter对象,它是Pattern:iter:Iterator[Char] 我将这个字符迭代器传递给一个在字符上进行迭代的函数,并将一些字符添加到StringBuilder中 为了能够在使用需要上一个、当前和下一个字符的helper funcs对字符im进行迭代时使用此函数 如何管理这样的东西?代码,有时甚至是伪代码,通常比您提供的代码模糊描述更具指导性和帮助性 您可以使用滑动获取上一个/当前/下一个 val ci = "abcde

我正在处理一个scala
BufferedSource
文件,它有一个
iter
对象,它是
Pattern:iter:Iterator[Char]

我将这个字符迭代器传递给一个在字符上进行迭代的函数,并将一些字符添加到StringBuilder中

为了能够在使用需要上一个、当前和下一个字符的helper funcs对字符im进行迭代时使用此函数


如何管理这样的东西?

代码,有时甚至是伪代码,通常比您提供的代码模糊描述更具指导性和帮助性

您可以使用
滑动
获取上一个/当前/下一个

val ci = "abcdefghijklmnopqrstuvwxyz".toIterator  // Iterator[Char]

val sci = ci.sliding(3)  // GroupedIterator[Char]
sci.next  // List[Char] = List(a, b, c)
sci.next  // List[Char] = List(b, c, d)
但这通常会造成它自己的麻烦,因为接收代码不知道它是在看第一次迭代(“上一次”字符尚未处理)还是在看最后一次迭代(“下一次”字符将不再显示)

更有利的做法可能是简单地缓冲迭代器,以便在使用它之前查看即将出现的元素

val ci = "ab".toIterator  // Iterator[Char] = non-empty iterator

val bci = ci.buffered  // scala.collection.BufferedIterator[Char]
bci.next     // Char = a
bci.hasNext  // Boolean = true
bci.head     // Char = b
bci.next     // Char = b
bci.hasNext  // Boolean = false
file.iter.toSeq.slideing(3,1).toSeq
可能有助于实现您的要求。。