直接在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);