我有一个列表,我希望以类似于Clojure的(partition sz step col)
方法或Scala的IterableLike.sliding(size: Int, step: Int)
函数的方式进行拆分。具体来说,给出如下列表:
(1, 2, 3)
我希望能够迭代子列表,如:
(1, 2), (2, 3)
在Clojure中,这将完成:
(partition 2 1 (1, 2, 3))
和Scala一样:
val it = Vector(1, 2, 3).sliding(2)
然而,我没有这么奢侈,我希望避免不得不自己动手。 Guava有一个接近的分区方法,但不提供重叠。谷歌搜索也没有结果。这种方法是存在还是我必须自己动手?
答案 0 :(得分:2)
Guava没有这个,但它的AbstractIterator
可能会让“滚动你自己”更容易。
可能已经提交了feature request;如果没有,请随意。
答案 1 :(得分:1)
Guava目前没有这样的内容,但如果您提交issue,我们可以讨论添加它。
对于我自己,我会使用ArrayDeque
来存储正在运行的窗口,但这对于库方法没有意义。