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