次のような動作をするコレクションを実装するフレームワークがあるかどうかに興味があります。
最初に次のものが含まれているとします:[1、2、3]
- 私はそれを(イテレーターを使用して)繰り返し、要素2に到達します。ここで、最後に4を追加します(コレクションは[1、2、3、4]になります)。
- ここで、新しいイテレータを作成してコレクションを反復すると、[1、2、3、4]になります。
- 私は最初のイテレータで反復を続けます、そしてそれは私にちょうど3を与えて戻ってきます
- ここで、最初のイテレータをリセットすると、[1、2、3、4]が得られます(新しいイテレータを作成するのと同様です)。
同じことが要素の除去にも当てはまります。追加する代わりに3を削除すると、2番目のイテレータは[1、2]を返しますが、最初のイテレータは3と最後を返します。
したがって、イテレータを取得して、イテレータを作成したときに持っていたコレクションを取得したいのですが(後でイテレータを繰り返しても、少し繰り返して後で続行します)、イテレータをリセットすると、ガベージコレクションが行われます。は最新バージョンに更新され、イテレータが作成されたときの配列の内容に応じて異なるバージョンを提供する複数のイテレータインスタンスを異なる時間に作成できるはずです。
複数のスレッドでうまく機能するためにそれが必要であり、効率的な実装が望ましいです。
誰かがそのようなコレクションの実装を知っていますか、それとも私はそれを自分で実装する必要がありますか?