黑马程序员技术交流社区

标题: ConcurrentModificationException两种解决方案,亲测总结. [打印本页]

作者: ㏒假™面具    时间: 2015-3-13 23:25
标题: ConcurrentModificationException两种解决方案,亲测总结.
  1. * 并发修改异常的演示
  2. *         出现原因:         当方法检测到对象的并发修改时,但不允许这种修改时,抛出磁异常
  3. *                         迭代器是依赖于集合存在的,在迭代过程中,如果集合中添加了元素,而迭代器不知道,就会抛出该异常
  4. * 解决方案: 1 for循环  在结尾处添加元素,本次遍历可以遍历到新添加元素
  5. *                   2.ListIterator 中的add(E e) 方法,在标记的下一位置添加元素,本次迭代,迭代不到新添元素。
  6. */
  7. package list;

  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import java.util.ListIterator;

  11. /**
  12. * @author 面具
  13. *
  14. */
  15. public class ListDemo {
  16.         public static void main(String[] args) {
  17. //                创建集合
  18.                 List list = new ArrayList();
  19. //                添加元素
  20.                 list.add("abc1");
  21.                 list.add("abc3");
  22.                 list.add(1,"abc2");
  23. //                迭代集合集合打印
  24.                 for (ListIterator iterator = list.listIterator(); iterator.hasNext();) {
  25.                         String s = (String) iterator.next();
  26.                         System.out.println(s);
  27.                         if(s.equals("abc1")){
  28.                                 iterator.add("桂纶镁");
  29.                         }
  30.                 }
  31.                 System.out.println("---------------------华丽的分割线----------");
  32. //                for循环遍历
  33.                 for(int i = 0 ; i<list.size(); i++){
  34.                         String s = (String)list.get(i);
  35.                         System.out.println(s);
  36.                         if(s.equals("abc2")){
  37.                                 list.add("高圆圆");
  38.                         }
  39.                 }
  40.         }
  41. }
复制代码

并发修改异常.png (2.6 KB, 下载次数: 63)

并发修改异常.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2