gpt4 book ai didi

java - 如何删除ArrayList中的对象

转载 作者:行者123 更新时间:2023-12-01 10:21:56 25 4
gpt4 key购买 nike

如何实现删除 ArrayList 中的对象。我尝试了以下代码,但粒子没有消失。我输出了removeQue ArrayList的大小,它输出1。checkCollide方法可以很好地检测碰撞。

这是一个名为 Particles 的类

  public void Update(){
for(Enemies e: Enemies.enemies){
if(this.checkCollide(e.x,e.y,e.mass)){
removeQue.add(this);
}
}
removeQue.clear(); // Remove objects
}

更多规范:

这是全类同学:

导入java.util.ArrayList;导入 java.awt.*;

public class Particle{

public static ArrayList<Particle> particles = new ArrayList<Particle>();
public static ArrayList<Particle> removeQue = new ArrayList<Particle>();

public static int particleCount;

private int x,y,r,g,b,mass;

private boolean playerParticle = false;

private Color color = new Color((int)Math.floor(Math.random() * 256),(int)Math.floor(Math.random() * 256),(int)Math.floor(Math.random() * 256));

public Particle(int x,int y, int mass, boolean p){
particleCount++;
this.x = x;
this.y = y;
this.mass = mass;
playerParticle = p;
}

public void Update(){
for(Enemies e: Enemies.enemies){
if(this.checkCollide(e.x,e.y,e.mass) && !playerParticle){
if(e.mass <= 200){
e.addMass(this.mass);
}
if(e.mass >= 200){
e.isTarget = false;
e.goalReached = true;
e.targetType = "c";
}
if(e.targetType.equals("p")){
e.goalReached = true;
e.isTarget = false;
}
this.x = (int) Math.floor(Math.random() * 10001);
this.y = (int) Math.floor(Math.random() * 10001);
}else if(this.checkCollide(e.x,e.y,e.mass) && playerParticle){
e.addMass(this.mass);
removeQue.add(this);
}
}
removeQue.clear();
}

private boolean checkCollide(double x,double y,double mass){
return x < this.x + 10 && x + mass > this.x && y < this.y + 10 && y + mass > this.y;
}

public void Draw(Graphics bbg){
bbg.setColor(color);
bbg.fillRect(x,y,10,10);
bbg.drawRect(x,y,10,10);
}


}

这是我的主要更新方法

public void update(){
for(Particle p: Particle.particles){
p.Update();
}

for(Enemies e: Enemies.enemies){
e.Update();
}
}

最佳答案

我不确定您是否正确描述了情况。之后

removeQue.clear()

被调用时,ArrayList 的大小应该为 0,因为它是该方法的最后一行。

关于java - 如何删除ArrayList中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35540815/

25 4 0