Java 如何在不使用ArrayList的情况下从数组中删除对象?

Java 如何在不使用ArrayList的情况下从数组中删除对象?,java,arrays,graphics,Java,Arrays,Graphics,如何在不使用ArrayList的情况下从数组中删除对象 我尝试使用Swing创建迷你应用程序。 此时,它包含了主窗口和其中的圆圈,当我点击圆圈时,它消失了 当圆消失时,应将其从阵列中移除。我不知道怎么做 代码如下: 带有对象的数组 Sprite[]sprites=新的Sprite[10] 删除对象的方法: private void deleteCircle(GameCanvas gameCanvas) { gameCanvas.addMouseListener(new MouseAdap

如何在不使用ArrayList的情况下从数组中删除对象

我尝试使用Swing创建迷你应用程序。 此时,它包含了主窗口和其中的圆圈,当我点击圆圈时,它消失了

当圆消失时,应将其从阵列中移除。我不知道怎么做

代码如下: 带有对象的数组

Sprite[]sprites=新的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));
            }
        }
    });
}

如何在不使用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];
     }
}
int indexToRemove=4//我们正在删除的索引
Object[]newArray=新对象[array.length-1];
对于(int i=0;i而言,工作方式如下:

   for (int i = 0; i <sprites.length ; i++) {
                if (sprites[i].halfHeight == 0 && sprites[i].halfWidth == 0){
           sprites = (Sprite[]) ArrayUtils.remove(sprites, i);
      }
致:


请解释您不想使用
ArrayList
的原因。我还没有找到您使用它的任何地方。首先,尝试更好地理解数组在java中的工作方式,第二个目标规范……并定义“不工作”。您似乎正在使用,但确实有效。您正在使用的删除方法应该有效(除此之外,如果要删除连续的元素,索引将出现一些问题),因此问题可能出现在其他地方。您可以发布一个?
   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);
ArrayUtils.remove(sprites, i);