티스토리 뷰

 

⭐️ 개요 

코테 풀다가 에러 발견 

Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1469) at java.util.HashMap$KeyIterator.next(HashMap.java:1493)

 

⭐️ 해결

해시맵 keySet() 사용 중에 해당 객체의 값을 수정하다가 생긴 결과로,

새로운 newHashMap을 선언해주고, 그 값에 값을 넣어준 다음에

밑에로 갱신한다. 

 

에러 상황

HashMap<Integer, Integer> hm = new HashMap<>();
for (int i : hm.keySet()) {
	
    hm.put(i+10, 0);
    hm.put(i, 0);
}

 

해결 예시

해시 맵의 가장 마지막에 put한 값이 해당 값으로 갱신되는 성질을 이용함.

HashMap<Integer, Integer> hm = new HashMap<>();
HashMap<Integer, Integer> newHm = new HashMap<>();
for (int i : hm.keySet()) {
	
    newHm.put(i+10, 0);
    newHm.put(i, 0);
}

for (int i : newHm.keySet()) {
	
    hm.put(i, 0);
}