如何从索引中删除数组中的项?

时间:2012-10-23 03:03:04

标签: java arrays class methods

我试着澄清一下。

我有:

public static void main(String[] args) {
    int a[] = {5, 6 ,7 ,8 ,9 ,10};
    removeArray takeOff = new removeArray();
    takeOff.remove(3);

    for (int i = 0 ; i < a.length ; i++){
        System.out.print(" "+a[i]);
    }
}

应打印出来:

5, 6, 7, 9, 10.

问题是删除方法,我该怎么写呢。我有:

public class removeArray {

public void remove(int index) {       

    if (index > 0) {
        System.arraycopy(testThatArray.a, 0, testThatArray.a, 0, index);
    }

    if (index < testThatArray.a.length - 1) {
        System.arraycopy(testThatArray.a, index + 1, testThatArray.a, index, testThatArray.a.length - index - 1);
    }

}

}

仍然,不是吗?

更新: 我得到它打印5 6 7 9 10 10,我该如何删除最后一个值?

5 个答案:

答案 0 :(得分:2)

你不能删除数组的索引或元素,因为它已经在内存中已经调整大小,所以你不能使用delete但你可以放两个值{null或0}或你想要显示的另一个值你已经得到这个。

答案 1 :(得分:1)

无法调整数组大小。如果您想要一个具有可重新定位的集合,请使用List<Integer>(例如ArrayList<Integer>)。

否则,您必须通过制作比原始数组小一个元素的数组副本来自行实现。然后将除旧指定索引处的值之外的所有值从旧数组复制到新数组。

答案 2 :(得分:0)

数组是固定长度集。你不能删除一个值。如果你不想添加和删除东西,请使用List或ArrayList

答案 3 :(得分:0)

创建一个新数组或使用实际数组的大小调整大小,并循环遍历数组中的所有值以填充新数组,但跳过.remove方法中指定的数组。

答案 4 :(得分:0)

ArrayUtils#removeElement可能会做你想要的。但是,请考虑使用List。