2

データアクセスレイヤーのメソッドのコレクションよりもイテレータを返す方が望ましいという利点はありますか?

どこかで見たことがありますが、理由は覚えていません。

PS: 完了していない間に一部のデータをリアルタイムでフェッチすることに関係している可能性があります。

4

2 に答える 2

2

Iterator は Collection よりもはるかに単純なインターフェイスを備えており、必要な方法で処理を行うカスタム ラッパーを簡単に実装できるはずです。

おっしゃったように、データが利用可能になるまで next() メソッドがブロックされるように実装できます。また、 remove() 操作を実装しないことを選択して、呼び出し元が基になるコレクションを変更できないようにすることもできます。

于 2012-06-13T12:38:52.860 に答える
2

JDBCResultSetは基本的にそのように機能しますが、別のより複雑なインターフェイスです。はい、その理由は、最初に完全にメモリにフェッチすることなく、巨大なデータセットを処理できるからです。

また、他のいくつかの言語 (C++ と Python だと思います) では、反復子をデータ項目として慣用的に使用しています。Java では、これは一般に行われず、(やむを得ない理由がない限り) 回避する必要があります。Java の反復子には、コレクションよりも有用性が低くなるいくつかの重要な機能が欠けているためです。つまり、それらをコピーしたり、位置をリセットしたりすることはできません。

于 2012-06-13T12:47:04.917 に答える