java.util.HashMapでは、メンバー変数modCountは、主に同時変更を検出するために使用されているようです。 その変数をintにする必要があるのですが、これはブールで達成できませんか?java.util.HashMapで、なぜmodcountがブール値ではないのですか?
0
A
答えて
5
ブール値ではなく、変更回数を持つことで、複数のイテレータが有効かどうかを同時に追跡できます。
ブール値で変更が追跡された場合、すべてのイテレータが同じ有効状態になる必要があります。カウントは、iteratorが生成されたときにいくつ修正が行われたかを知ることができます。したがって、使用される変更の数が異なる場合、それが無効であることを知るよりも、変更の数が多い場合。そのため、イテレータの一部を有効にし、一部を無効にすることができます。それぞれのイテレータの有効性を手動で更新する必要はありません。
2
ブール値がある場合は、イテレータを呼び出す前にfalse
に設定する必要があり、終了したらtrue
かどうかを確認します。
しかし、2つのイテレータを作成した場合、またはイテレータを作成してforEach
メソッドをコールした場合、2番目のイテレータは再び変数をリセットします。今
Iterator<K> keyIterator = map.keySet().iterator();
...
keyIterator.next();
...
map.put(key,value);
Iterator<Map.Entry<K,V>> pairIterator = map.entrySet().iterator();
...
keyIterator.next();
、keyIterator.next()
にこの最後の呼び出しがあるため途中でmap.put(key,value)
コールで、失敗するはずです。しかし、ブール値をリセットして作業する場合、map.EntrySet().iterator()
はブール値フラグをクリアする必要があります。したがって、keyIterator.next()
は失敗しません。
整数を使用すると、イテレータが実際にマップの状態を変更しないため、この問題は回避されます。 "古い値"を保持する変数はローカルに保持されているため、他の読者と干渉することはありません。
関連する問題
- 1. なぜブール値()がJavascriptで遅いのですか?
- 2. なぜcross_validation.train_test_splitの引数random_stateがブール値ではない整数
- 3. ブール値が定義されていないのはなぜですか?
- 4. SplFileInfoをブール値に変換できないのはなぜですか?
- 5. なぜ私のブール値が整数を返すのですか?
- 6. Android - なぜonItemLongClick(...)がブール値を返すのですか?
- 7. なぜ関数がブール値を返すのですか?
- 8. ブール値のコンテキストで使用すると、オブジェクトをブール値に変換したいのはなぜですか?
- 9. なぜコンテキストとrootjQueryが '||'オペレーション ?結果はブール型ではないのですか?
- 10. switch文パラメータにブール値が必要なのはなぜですか?
- 11. ブール戻り値の型はなぜ必要ですか?
- 12. circular_bufferにブール値を格納しないのはなぜですか?
- 13. ブール型のデータ型がMySQLで動作しないのはなぜですか?
- 14. anglejsでブール値が変更されたときにngOnchangesが起動しないのはなぜですか?
- 15. Java ArrayListクラスがaddのブール値を返すのはなぜですか?
- 16. json.dumpsがブール値のケーシングを変更するのはなぜですか?
- 17. なぜこれらのブール値はPythonで動作するのですか?
- 18. ルートノードの値が有効でないのはなぜですか?
- 19. 条件の1つが真であっても、このブール値が偽になるのはなぜですか?
- 20. なぜ整数== nullがC#の有効なブール式ですか?
- 21. 文字列が値でないのはなぜですか?
- 22. 私のメソッドのロジックが正しいブール値を出力しないのはなぜですか?
- 23. Javaがブール - > Intキャストを許可しないのはなぜですか?
- 24. なぜ私はブールを2回変更できないのですか?
- 25. コアデータエンティティの属性のブール値を更新できないのはなぜですか?
- 26. グローバルconst charには "静的"が必要ですが、ブールには必要ないのはなぜですか?
- 27. Javascript:なぜtypeof()がブール値を文字列として返すのですか?
- 28. NaNがInt32エラーの有効な値ではないのはなぜですか?
- 29. argparseがブール値フラグを正しく解析しないのはなぜですか?
- 30. なぜこのブール値はJavaではなくC++でコンパイルされますか? C++で
http://stackoverflow.com/questions/11833058/modcount-in-map-and-list modCountは、マップが変更された回数です。同じことが 'ブール'で終わったのかどうかについては...おそらく、これは内部のフィールドです。おそらくJDKデベロッパだけが本当の説明を提供することができます。 – Tunaki