您的位置:首页 > 编程语言 > Java开发

java.util.ConcurrentModificationException错误的原因及解决方法

2012-05-31 12:00 483 查看
母牛生小牛的题。
传统做法是斐波那契数列的做法,直接递归就可以。
这里想到之前做过用java面向对象的方法来做,结果iterator遍历list的时候遇到一个问题:java.util.ConcurrentModificationException

后来找到原因:定义两个类:farm,cow,其中farm中有cows的列表,每次生小牛直接farm.add(),在cows中添加一个,但是没注意到我是在遍历cows时判断是否生小牛,生就添加,不生就下一个母牛。所以,如果有修改的话,修改后的cows与我正在遍历的cows产生不一致,导致“当前修改错误”。

改进方法:产生小牛和遍历cows不放在一起,即不用iterator进行遍历,直接用for对cows的size进行遍历,每个生小牛的过程放在cow类中实现,让他自己growup,farm类只管对其中的所有小牛的每年进行监管,只遍历cows数组而已!不方便之处就在,两个类中的方法来回调用,首先farm中的produce遍历cows,调用cow中的growup方法,growup判断了会生小牛又要调用farm中的add方法做添加。因为produce中,size一开始就确定了cows.size(),所以,size一年一变,不影响产生小牛的过程。iterator不好就在于其只能hasNext()相当于动态的判断size,所以这个地方不好用。

代码与上次做的基本一样,直接看连接就可以:/article/10839574.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: