【发布时间】:2023-04-03 08:53:01
【问题描述】:
JAVA
我的游戏中有一个 ArrayList 来存储游戏中的所有粒子。我有一个访问 ArrayList 以更新物理的更新方法,我有一个访问 ArrayList 以在屏幕上渲染粒子的渲染方法和一个 MouseClick 侦听器,当它检测到 MouseClick 时,它将向 ArrayList 添加一个新粒子。
我的问题是我不断收到 java.util.ConcurrentModificationException。这是因为当我同时单击它呈现并且两种方法都试图访问 ArrayList。有没有办法同时访问ArrayList(不同的数据类型?)。
一些代码可以帮助解决-
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;
}`
渲染方法
for(Particle e : this.ParticleList)
{
g.fillRect(e.x, e.y, 1, 1);
}
【问题讨论】:
-
如果您尝试在迭代期间添加/删除 2 件事:使用 ListIterator.remove/add 但除了在最后添加/删除之外它可能会很慢。您很可能需要重新设计数据结构
标签: java arrays collections arraylist