2012-06-10 4 views
7

私は、Clojureの(partition sz step col)メソッドまたはScalaのIterableLike.sliding(size: Int, step: Int)関数と同様の方法で分割したいリストを持っています。具体的には、のようなリストを与えられた:私はのようなサブリストを反復処理することができるようにしたいClojure(パーティション)またはScalaのsliding()関数をGuavaに複製できますか?

(1, 2, 3) 

:Clojureので

(1, 2), (2, 3) 

これはで行うことになります。

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

Scalaの場合は

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

しかし、私はそのような贅沢を持っていないと私は自分自身をロールバックすることを避けるために望んでいる。 Guavaにはパーティションメソッドがありますが、オーバーラップはありません。グーグルリングは無益でした。そのような方法が存在するのか、それとも自分自身を転がす必要がありますか?

+1

2人のguavaパーティションを1つの要素が落としたシーケンスからマージすることができる人がいないと誰も気付かない場合... –

+0

* size *パーティションは必要ありませんか?しかし、良いアイデア。 –

+0

mapを使うことができます: 'map(fn [xy] '(x、y))lst(rest lst))' – Ankur

答えて

1

グアバには今のところこのようなものはありませんが、issueを提出すれば追加することができます。

私自身は、実行中のウィンドウを格納するのにArrayDequeを使用しますが、これはライブラリメソッドには意味がありません。

+0

http://code.google.com/p/guava-libraries/issues/detail?id=1027で提出された問題。 –

2

グアバにはこれがありませんが、AbstractIteratorはおそらく「自分でローリングする」ことが容易になります。

すでにfeature requestが提出されている可能性があります。そうでなければ、自由に感じてください。

関連する問題