java操作集合中 concurrentModifyException 異常的原因分析


不要在 foreach 循環里進行元素的 remove / add 操作。 remove 元素請使用 Iterator
方式,如果並發操作,需要對 Iterator 對象加鎖。
正例

Iterator<String> iterator = list.iterator();
  while (iterator.hasNext()) {
  String item = iterator.next();
  if (刪除元素的條件) {
  iterator.remove();
 }
}

反例

List<String> a = new ArrayList<String>();
  list.add("1");
  list.add("2");
  for (String item : list) {
    if ("1".equals(item)) {
      list.remove(item);
    }
  }

 

subList 也一樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM