迭代删除的处理机制

直接在for下面remove/delete都会引发异常:ConcurrentModificationException
下面是解决方案:

利用迭代器进行删除;

 1 Iterator<String> iterator = kvs.keySet().iterator();
 2 while (iterator.hasNext()) {
 3     String name = iterator.next();
 4     String[] parts = name.split("\.");
 5     if (parts.length > 5 && parts[4].equals("myqueues")) {
 6         String queueName = parts[5];
 7         if (queueName.equals(scheduler.queueName)) {
 8             iterator.remove();
 9         }
10     }
11 }

收集删除项,最后一并删除

List<String> toRemove = new ArrayList<>();
for (String str : myArrayList) {
    if (someCondition) {
        toRemove.add(str);
    }
}
myArrayList.removeAll(toRemove);
原文地址:https://www.cnblogs.com/xiashiwendao/p/8504348.html