获取java.util.ConcurrentModificationException
我执行了以下代码获取java.util.ConcurrentModificationException,java,collections,hashset,Java,Collections,Hashset,我执行了以下代码 Map<String, SyncPrimitive> syncPrimitives = new HashMap<String, SyncPrimitive>(); for (SyncPrimitive primitive : this.getSyncPrimitives()) { String groupId = primitive.getId(); primitive.onConnect(groupId);
Map<String, SyncPrimitive> syncPrimitives = new HashMap<String, SyncPrimitive>();
for (SyncPrimitive primitive : this.getSyncPrimitives()) {
String groupId = primitive.getId();
primitive.onConnect(groupId);
}
在onConnect方法中,修改了原始项目。如何克服此问题?在迭代过程中,您不能使用for each修改集合。如果要修改它,请使用 这类异常描述得非常清楚: 当对象的并发修改不允许时,检测到该修改的方法可能会引发此异常 例如,通常不允许一个线程在另一个线程迭代集合时修改集合。通常,在这些情况下,迭代的结果是未定义的 见相关问题:
显示您的onConnect方法。此代码是否编译?
Error while calling watcher
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)