并发修改异常.
这就是体现了ArrayList是线程不安全的.就是你在迭代器迭代的时候,不能通过集合本身,或者迭代器来对集合内容进行结构上的修改(长度).因为这样会进入一个矛盾的境地.
关于这个不好理解的话,举个例子,就是你在对一箱啤酒点数的时候,有人来拿走或者放进去啤酒,你是不是肯定得不到正确的总数?所以就会异常了.
关于修改方法,两种,一是用for循环再循环的时候进行增减.还有一种就是用列表迭代器,就是ListIterator进行迭代中修改,因为ListIterator中提供了增删功能.
代码楼上用for的是对的,不过他的第二种方法如果把Iterator换成ListIterator lit=c.listIterator();就更好了,因为列表迭代器功能更多. |