Eclipseを使用してJavaコードをデバッグするときに、コレクション変数について、modcount
メンバーを見ました。どういう意味ですか?
Javaのコレクションの多くは「フェイルファスト」なイテレータを生成します。つまり、イテレータの作成後にコレクションが変更された場合、イテレータは無効になり、ConcurrentModificationException
できるだけ早くをスローします。(後で失敗したり、無効なデータを返したりするのとは異なります。)
この機能をサポートするには、コレクションが変更されたかどうかを追跡する必要があります。コレクションが変更されるたびに、増分されますmodcount
。コレクションがイテレータを生成するとき、イテレータはmodcount
それが作成されたときのfrom の値を格納します。次に、イテレータを使用しようとするたびに、イテレータが保存されてmodcount
いるものが親コレクションのcurrentと異なるかどうかを確認しますmodcount
。そうである場合、イテレータはで失敗しますConcurrentModificationException
。
(このルールの例外は、(イテレーターのremove
メソッドのように)イテレーター自体を介して行われたコレクションへの変更がイテレーターを無効化しないことです。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加