Я получаю исключение Concurrent Modification Exception, когда пытаюсь удалить элемент из HashMap. Я знаю, что удаление элементов во время итерации через HashMap вызывает это исключение, но мне нужно заменить старый элемент на новый. Как я могу это сделать ? Может быть, создать копию countNumberOfEachCharacter HashMap и выполнить итерацию через оригинальный HashMap, чтобы удалить элемент из копии HashMap?Заменить/Изменить элементы HashMap во время итерации
countNumberOfEachCharacter = new HashMap<Character,Character>();
if (countNumberOfEachCharacter.containsKey(word.charAt(i))) {
System.out.println("This character already exists");
for (Iterator it = countNumberOfEachCharacter.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
if (key.equals(word.charAt(i))) {
int toIncrease = Integer.parseInt(value.toString());
toIncrease++;
System.out.println("key "+key);
System.out.println("increased "+toIncrease);
countNumberOfEachCharacter.remove(word.charAt(i));
char c = Character.forDigit(toIncrease, 10);
countNumberOfEachCharacter.put(word.charAt(i),c);
}
}
}
else {
System.out.println("First time found this character");
char c = Character.forDigit(1, 10);
countNumberOfEachCharacter.put(word.charAt(i),c);
System.out.println("Stored "+word.charAt(i)+" with count "+c);
}
Пожалуйста, найдите время, чтобы код в вопросах был более читабельным. –
Используйте 'ConcurrentHashMap' –
@ Eng.Fouad это не устранит проблему, потому что нет параллельного доступа. Он просто перебирает его и удаляет элементы. –