我可以获得具有更大滑动窗口的Char迭代器吗?的java /阶

时间:2017-02-26 12:34:32

标签: java scala

我使用的文件是scala BufferedSource,并且iter对象为Pattern: iter: Iterator[Char]

我将这个char迭代器传递给一个函数,该函数迭代char并将一些字符添加到StringBuilder。

当使用需要前一个,当前和下一个字符的辅助函数迭代字符时能够使用此函数...

我该如何管理这样的事情?

1 个答案:

答案 0 :(得分:1)

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

您可以使用sliding来获取上一个/当前/下一个。

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)

但这通常会产生自己的麻烦,因为收到的代码并不知道它是否在查看第一次迭代("之前的#34; char还没有被处理过)或决赛("下一个" char赢了再也没见过。)

简单地缓冲迭代器可能更有利,这样你就可以在使用它之前查看即将到来的元素。

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