反转hashMap的value,key
public class TestHashtable {
public static void main(String[] args) {
//hashMap 反转<value,key>
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("adc", "物理英雄");
hashMap.put("apc", "魔法英雄");
hashMap.put("t", "坦克");
for (String key : hashMap.keySet()) {
String value = hashMap.get(key);
hashMap.put(value, key);
}
}
}
报错了
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1493)
at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1516)
at com.test.TestHashtable.main(TestHashtable.java:18)
不知道原因是什么。
我以前学JS,现在初学java
因为你在遍历 HashMap 的时候执行了新增操作,HashMap 是不允许的,你可以尝试用一个新的 HashMap 来存储反转后的键值对。用一个常见的名词解释是 快速失败(fail-fast),你可以了解一下。