在这种方法中,我试图将一个数组列表中的所有元素与另一个数组列表中的所有元素进行比较。然后,如果第一个数组列表中的元素不等于第二个数组列表中的任何元素,则删除该元素。比较步骤或删除步骤有问题,但我不确定是哪个。任何帮助将不胜感激。
如果您想澄清,请不要犹豫。
public static ArrayList<Integer> compareArrayandList(ArrayList<Integer>compare, ArrayList<Integer>array2) {
int[] counter = new int[compare.size()];
for (int x: counter) {
x = 0;
}
for (int i = 0; i < compare.size(); i++) {
counter[i] = 0;
for (int number: array2) {
if (compare.get(i) ==number) {
counter[i]++;
}
}
}
for (int i=0; i<counter.length;i++) {
if (counter[i]==0) {
compare.remove(new Integer(i));
}
}
return compare;
}
编辑:(由 Memento Mori 提供)您的代码不起作用的原因是,当您删除一个元素时,您的 ArrayList 中的位置正在发生变化。假设您删除了元素 3。现在元素 3 与以前不同。