У меня есть коды ниже, и я ожидал бы от сценария случая 2 ConcurrentModificationException
, но он работает успешно. Как я знаю, что если я сделать то же самое с одним ключом на карте она не бросает исключение, потому что here , но еще раз, когда я воспроизвести этот сценарий, имеющие несколько ключей с двумя случаями -В Карте, если мы делаем модификацию с существующими ключами, мы не получаем ConcurrentModificationException
- модификации по новому ключу.
- модификация существующий ключ.
Случай 1:
Map<String,String> mp = new HashMap<String,String>();
mp.put("1", "10");
mp.put("2", "11");
mp.put("3", "12");
mp.put("4", "13");
for (String key :mp.keySet()) {
mp.put("5", "14");
}
Это будет работать, как и ожидалось, броски ConcurrentModificationException
.
Случай 2:
Map<String,String> mp = new HashMap<String,String>();
mp.put("1", "10");
mp.put("2", "11");
mp.put("3", "12");
mp.put("4", "13");
for (String key :mp.keySet()) {
mp.put(key, "14");
}
Это будет не бросает ConcurrentModificationException
. Зачем ??
@TheLostMind исправил его. –