你能用Guava复制Clojure的(分区)或Scala的sliding()函数吗?

时间:2012-06-10 03:34:11

标签: java scala clojure guava

我有一个列表,我希望以类似于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有一个接近的分区方法,但不提供重叠。谷歌搜索也没有结果。这种方法是存在还是我必须自己动手?

2 个答案:

答案 0 :(得分:2)

Guava没有这个,但它的AbstractIterator可能会让“滚动你自己”更容易。

可能已经提交了feature request;如果没有,请随意。

答案 1 :(得分:1)

Guava目前没有这样的内容,但如果您提交issue,我们可以讨论添加它。

对于我自己,我会使用ArrayDeque来存储正在运行的窗口,但这对于库方法没有意义。