7

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

(1, 2, 3)

我希望能够遍历子列表,例如:

(1, 2), (2, 3)

在 Clojure 中,这将通过以下方式完成:

(partition 2 1 (1, 2, 3))

使用 Scala 将是:

val it = Vector(1, 2, 3).sliding(2)

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

4

2 回答 2

2

番石榴没有这个,但它AbstractIterator可能会使“滚动你自己的”更容易。

可能已经为其提交了功能请求;如果没有,请随意。

于 2012-06-11T14:58:42.110 回答
1

Guava 目前没有这样的东西,但如果你提出问题,我们可以讨论添加它。

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

于 2012-06-10T21:18:35.843 回答