Cha*_*kag 0 java collections hashset
我执行了以下代码
Map<String, SyncPrimitive> syncPrimitives = new HashMap<String, SyncPrimitive>();
for (SyncPrimitive primitive : this.getSyncPrimitives()) {
String groupId = primitive.getId();
primitive.onConnect(groupId);
}
Run Code Online (Sandbox Code Playgroud)
然后我得到以下异常
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)
Run Code Online (Sandbox Code Playgroud)
在onConnect方法中,原始对象被修改.我怎样才能克服这个问题?
您无法在迭代期间使用for-each修改集合.如果要修改它,请使用Iterator.
文档中描述的这种异常非常清楚:
当不允许这样的修改时,检测到对象的并发修改的方法可能抛出此异常.
例如,一个线程通常不允许修改Collection而另一个线程正在迭代它.通常,在这些情况下,迭代的结果是不确定的.
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |