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

Joh*_*n S 7 java scala clojure guava

我有一个列表,我想以类似于(partition sz step col)Clojure方法或IterableLike.sliding(size: Int, step: Int)Scala函数的方式进行拆分.具体来说,给出如下列表:

(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我希望能够迭代子列表,如:

(1, 2), (2, 3)
Run Code Online (Sandbox Code Playgroud)

在Clojure中,这将完成:

(partition 2 1 (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

和Scala一样,它将是:

val it = Vector(1, 2, 3).sliding(2)
Run Code Online (Sandbox Code Playgroud)

然而,我没有这么奢侈,我希望避免不得不自己动手.Guava有一个接近的分区方法,但不提供重叠.谷歌搜索也没有结果.这种方法是存在还是我必须自己滚动?

Lou*_*man 1

Guava 目前没有类似的东西,但是如果您提出问题我们可以讨论添加它。

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