別のチームにライブラリを提供しています。私が提供するメソッドの1つは、引数としてIteratorを受け取ります。どういうわけか、一定の反復順序が必要です。Iteratorを拡張してコードでこれを行う方法はありますか?
2 に答える
1
直接ではありません。イテレータは、一度にアイテムを提供するためだけに作成され、メモリに格納して値のリスト全体を渡すことを回避します。これは、実行できない場合があります。
値がどのように生成され、どの境界をデータの並べ替えに適用する必要があるかについての知識がない限り、唯一の方法は、イテレータからすべての要素を取得し、それらをリスト/ベクトル/データベースに格納し、並べ替えて返すことです。ソートされたリストを使用する別のイテレータ。
于 2013-03-14T10:18:54.277 に答える
0
引数として、Iteratorを実装する具象クラスのインスタンスが渡されています。クラスはインスタンス化によって決定されるため、クラスを拡張することはできません。インスタンス化は、メソッドを呼び出すコードによって行われます。
必要な順序が尊重されないときに迅速に失敗したい場合は、GuavaのOrdering.isOrdered()メソッドを試してください。
注意:これは、引数がIteratorではなくIterableである場合にのみ機能します。Iterable(Iteratorを取得できるインターフェイス)である必要があります。これにより、2回繰り返すことができます。1回は順序を確認し、もう1回は処理します。
于 2013-03-14T10:18:51.043 に答える