:のJava - HashMapの反復 - のような私はHashMapを反復処理したい例外
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
map.replace(entry.getKey(), entry.getValue()-1);
if (entry.getValue() == 0) {
map.remove(entry.getKey(), 0);
}
}
は、これは例外で終わる:java.util.ConcurrentModificationExceptionが
任意のソリューションを?
種類は、あなたがそれを反復しているとして、あなたは、マップから項目を削除している
代わりにイテレータを使用してください。 – Zircon
"セット上の反復処理中にマップが変更された場合(イテレータ自身の' remove'オペレーションまたはイテレータによって返されたマップエントリ上の 'setValue'オペレーションを通して)、反復の結果は未定義です" http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#entrySet--ここで、「未定義」はCMEをスローすることを意味します。 –