如何在不使用arraylist的情况下从数组中删除对象?
我尝试使用秋千创建微型杀伤力。目前,它包含主窗口,并在其中圆圈,然后在我单击圆圈时 - 消失。
,当圆圈消失时,应将其从数组中删除。我不明白该怎么做。
这是代码:带有对象的数组;
Sprite[] sprites = new Sprite[10];
删除对象的方法:
private void deleteCircle(GameCanvas gameCanvas) {
gameCanvas.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
for (int i = 0; i <sprites.length ; i++) {
boolean takeDamage = x >= sprites[i].getLeft() && x<= sprites[i].getRight() && y >= sprites[i].getTop() && y <= sprites[i].getBottom();
if (takeDamage){
sprites[i].halfHeight = 0;
sprites[i].halfWidth = 0;
}
}
for (int i = 0; i <damageSprites.length ; i++) {
if (sprites[i].halfHeight == 0 && sprites[i].halfWidth == 0){
sprites = (Sprite[]) ArrayUtils.removeElement(sprites, i);
}
System.out.println(Arrays.toString(sprites));
}
}
});
}
如果object.halfHeight = 0
和object.halfWidth = 0
应该将其视为不存在,应从数组中删除:
尝试这样删除它,但这不起作用
for (int i = 0; i <damageSprites.length ; i++) {
if (sprites[i].halfHeight == 0 && sprites[i].halfWidth == 0){
sprites = (Sprite[]) ArrayUtils.removeElement(sprites, i);
如何在不使用arrayList的情况下从数组中删除对象?
像其他所有人一样,我建议大多数用例中的列表,但是您已经给出了不使用其中的理由。
我不确定为什么Arrayutils.RemoveElement对您不起作用,但是由于您想了解数组,我将解释一下如果没有帮助的方法,这将是如何完成的:
int indexToRemove = 4; //the index we're removing
Object[] newArray = new Object[array.length-1];
for(int i=0; i<array.length;i++){
if(i<indexToRemove){
newArray[i] = array[i];
}
else if(i>indexToRemove){
newArray[i-1] = array[i];
}
}
此循环通过原始数组,将每个项目复制到新数组。当它达到已删除的索引时,它会跳过副本,然后从下一个索引继续,将索引调整为-1,以使它们正确匹配。
这样的工作:
for (int i = 0; i <sprites.length ; i++) {
if (sprites[i].halfHeight == 0 && sprites[i].halfWidth == 0){
sprites = (Sprite[]) ArrayUtils.remove(sprites, i);
}
只是更改:
ArrayUtils.removeElement(sprites, i);
to:
ArrayUtils.remove(sprites, i);