맵에서 오류가 발생했습니다. Exception in thread "main"java.util.ConcurrentModificationException 문제

1216 단어
 public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put(1,10);
        map.put(2,20);
        map.put(3,30);
        for (Integer i:map.keySet()){
            map.put(i+10,map.get(i));
            map.remove(i);
        }
    }

이 코드를 보면 원래의 맵에 있는 키를 10으로 늘리고value는 변하지 않은 다음에 낡은 키를 제거하려고 합니다. 그러나 프로그램이 오류를 보고했습니다.
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
	at java.util.HashMap$KeyIterator.next(HashMap.java:1466)
	at aa.main(aa.java:11)

이어 인터넷 Iterator의 방법으로remove를 사용했는데 문제는 여전히 존재한다.나중에 아래의 방법으로 문제를 해결하다
public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put(1,10);
        map.put(2,20);
        map.put(3,30);
        System.out.println(map);
        Object[] objects = map.keySet().toArray();
        for (Object i:objects){
            Integer z = (Integer)i;
            map.put(z+10,map.get(i));
            map.remove(z);
        }
        System.out.println(map);
    }

좋은 웹페이지 즐겨찾기