在Java中编写removeAll的实现

时间:2013-02-25 02:23:42

标签: java

我正在研究以下问题:

编写一个方法removeAll,它将一个整数值作为参数,并从列表中删除所有出现的给定值。

我的代码不会检查数组中的所有元素。当我将for循环中的“size”更改为数组中的整数时,它工作正常。它检查所有这些。

public class ArrayIntList { 
    private int[] elementData;
    private int size;
}


public void remove(int index) {

    for(int i = index; i < size-1; i++) {
        elementData[i] = elementData[i+1];
    }
    size--;
}

public void removeAll(int num) {

    for (int j = 0; j < size; j++) {// this loop doesn't check all the elements

        if (elementData[j] == num) {
            remove(j);
        } 

    }

}

1 个答案:

答案 0 :(得分:1)

如果要移除元素,则需要递减j,否则会跳过元素。

remove(j);
j--;

或者,如果您从结尾迭代到开始,则不必更改计数器,因为您已经处理了这些元素。

 for (int j = size - 1; j >= 0; j--) {
    if (elementData[j] == num) {
          remove(j);
     } 
 }