当我运行以下代码时,我收到 java.util.ConcurrentModificationException:
public HashMap<String, String> instanceByPort() {
HashMap<String, String> instances = new HashMap<String,String>();
SimpleSNMPClient client = new SimpleSNMPClient("udp:" + hostname + "/161", communityString);
try {
instances = client.getTableAsStringsFlippedNoOID(new OID("1.3.6.1.2.1.31.1.1.1.1"));
Iterator<Map.Entry<String, String>> iterator = instances.entrySet().iterator() ;
while(iterator.hasNext()){
Map.Entry<String, String> instance = iterator.next();
String key = instance.getKey();
String value = instance.getValue();
instances.put(value, key);
}
} catch (Exception e) {
System.out.println("instanceByPort failed. " + e);
}
return instances;
}
一些搜索表明,当您在迭代 HashMap 时从 HashMap 中删除元素时,就会发生这种情况。但是,如您所见,我不会删除任何内容。
什么给出了?
最佳答案
迭代器
由实例
支持,并且循环修改实例
(通过调用instances.put
)。
因此,您在迭代其条目的同时(同时)修改实例
。
关于java - 当没有删除任何内容时,为什么我会收到 java.util.ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021167/