JAVA使用ArrayList而沒有ConcurrentModificationException(s)的方法?
我有我的比賽一個ArrayList來存儲所有的粒子游戲中。我有一個訪問ArrayList更新物理的更新方法,我有一個渲染方法訪問ArrayList來渲染屏幕上的粒子,以及一個MouseClick偵聽器,當它檢測到MouseClick時,它會向ArrayList添加一個新的粒子。
我的問題是我不斷收到java.util.ConcurrentModificationException。這是因爲當我在同一時間點擊它呈現並且兩個方法都試圖訪問ArrayList。是否有解決方案來同時訪問ArrayList(不同的數據類型?)。
一些代碼,以幫助OUT-
ArrayList的宣言
ArrayList<Particle> ParticleList = new ArrayList<Particle>();
粒子類定義
public class Particle {
int x;
int y;
Color colour;
int type;
//0:wall
public Particle(int x,int y,Color colour,int type)
{
this.x = x;
this.y = y;
this.colour = colour;
this.type = type;
}`
Render方法
for(Particle e : this.ParticleList)
{
g.fillRect(e.x, e.y, 1, 1);
}
如果您嘗試在迭代2期間添加/刪除一些東西:使用ListIterator.remove/add,但除了在最後添加/刪除它可能會很慢。最有可能你可能需要重新設計數據結構 – bestsss 2011-05-01 08:07:22