黑马程序员技术交流社区

标题: 我来问问集合list怎么解决并发修改异常呢? [打印本页]

作者: wosika    时间: 2016-9-11 17:25
标题: 我来问问集合list怎么解决并发修改异常呢?
求告知啊。好纠结啊
作者: wosika    时间: 2016-9-11 19:36
有没有哪位大神解答解答?
作者: 爱吃柠檬    时间: 2016-9-11 19:48
并发修改异常就是你再遍历集合的同时,对集合里的元素进行增加或删除
作者: 爱吃柠檬    时间: 2016-9-11 19:50
并发修改异常就是你再遍历集合的同时,对集合里的元素进行增加或删除...............解决办法就是你获取迭代器的时候要获取listIterator  就是list的迭代器 恩不是集合的迭代器  获取到List迭代器后,你再遍历集合的时候使用list的迭代器进行对元素的增加或删除就不会报并发修改异常了
作者: gong19931016    时间: 2016-9-11 19:52
使用迭代器本身的方法,而不是调用list集合的方法
作者: 孙洪勇    时间: 2016-9-11 20:25
用list特有的迭代器就可以了
作者: 驰马定中原    时间: 2016-9-11 20:50
并发修改异常:
        就是你使用迭代器,同时又使用集合中的方法增删集合中元素

而出现的异常
作者: NewsmallWhite    时间: 2016-9-11 20:51
并发修改异常: ConcurrentModificationException                         产生原因:                                 在遍历集合的同时,又通过集合的add()方法或者remove()添加或者删除集合中的元素,就会报并发修改异常。                         解决方案:                                 可以通过 ListIterator(列表迭代器来解决,但是注意:添加元素的时候                                  要使用列表迭代器的独有方式)                                 示例代码:                                         ListIterator<String> lit = list.listIterator();                                         while (lit.hasNext()) {                                                 String next = lit.next();                                                 if (next.equals("ab")) {                                                         //list.add("123");        //添加元素的时候不能使用集合的add()方法,而是使用列表迭代器的add()                                                         lit.add("123");                                                 }                                         }
作者: wosika    时间: 2016-9-11 23:48
感谢大神的回复!学习了!
作者: 刘永川    时间: 2016-9-11 23:52
使用listiteragor迭代器  这个就不会出现并发异常
作者: bin931207    时间: 2016-9-12 00:25
使用list中特有的迭代器才能增删元素
作者: SunCowbee    时间: 2016-9-12 00:30
底层原理不知道,但是就是能在集合遍历的时候进行增删而不会报错,而且增加的元素都是在该元素的后一个




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