4

複数の要素グループを論理的に含む配列があり、各グループは配列内で連続しています。(データベースの「order by」句を介してソートされました)。最上位のイテレータがグループごとに 1 つの下位レベルのイテレータを返すコレクションのコレクション (大まかな意味で - イテレータのイテレータで問題ありません) としてこれをトラバースするのが最もクリーンです。これは Guava の partition() と同様に機能する可能性がありますが、渡されたコンパレーターを使用して入力を分割する場所を見つけます。

これを行うには、Guava の MultiMap を使用するなど、非効率的な方法がたくさんあります。注文を利用する、簡単で既製の効率的な方法はありますか?

4

1 に答える 1

1

独自のイテレータを作成します。

最初のものは2番目のもののインスタンスを返します。

彼らはインデックスを共有しています!

2つ目は、インデックスが同じグループの要素にある限り、hasNext()に対してtrueを返します。2番目の's.hasNext()がfalseを返す場合、first.hasNext()を呼び出し、次にfirst.next()を呼び出します。

手書きのコードは5〜10行である必要があります(IDEがすべてのクラス、メソッド、およびブラケットの処理を実行すると仮定します)。

これは効率的で、醜い方法ではありません。より効率的にしたい場合は、forループ内のグループ条件をチェックして、配列をウォークスルーするだけです。それは適切にさらに少ないコードです。

于 2012-08-08T19:22:10.310 に答える