我正在研究以下问题:
编写一个 removeAll 方法,它接受一个整数值作为参数,并从列表中删除所有出现的给定值。
我的代码没有检查数组中的所有元素。当我将 for 循环中的“大小”更改为数组中的整数数量时,它工作正常。它检查所有这些。
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);
}
}
}
最佳答案
如果要删除元素,则需要递减 j
否则会跳过元素。
remove(j);
j--;
或者,如果您从末尾迭代到开头,则不必更改计数器,因为您已经处理了那些元素。
for (int j = size - 1; j >= 0; j--) {
if (elementData[j] == num) {
remove(j);
}
}
关于java - 用 Java 编写 removeAll 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059176/