我固定了它.我的新代码

//returns a new IntSet after subtracting a from b
// .minus().toString()
ArrayList minusArray = new ArrayList();
minusArray.addAll(array1);
for(int i =0; i< minusArray.size(); i++){
for(int j = 0; j < array2.size(); j++){
if(minusArray.get(i).equals(array2.get(j))){
minusArray.remove(i);
if(i == 0){
;
}
else if(j == 0){
;
}
else{
i = 0;
j = 0;
}
}
else{}
}
}

return minusArray;

我有两个数组列表,我试图从另一个“减”一个数组列表.例如,如果我有一个arrayList [1,2,3],并且我试图减去[0,2,4],结果的arrayList应该是[1,3].

我的代码在某些情况下工作,就像arrayList1 = [4,6]和arrayList2 = [6],它会给我一个[4]的结果.但是如果我尝试像[1,2,4]和[0,4,8]

我得到这个例外:

java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

at java.util.ArrayList.rangeCheck(Unknown Source)

at java.util.ArrayList.get(Unknown Source)

at IntSet.minus(IntSet.java:119)

at IntSetDriver.main(IntSetDriver.java:62)

这是我提出的代码.我已经通过测试运行,对我来说,我认为它应该工作.用户输入这些数组列表并且它们是预先分类的,我也不知道哈希或大O.

ArrayList minusArray = new ArrayList();
minusArray.addAll(array1);
for(int i =0; i< minusArray.size(); i++){
for(int j = 0; j < array2.size(); j++){
if(minusArray.get(i).equals(array2.get(j))){
minusArray.remove(i);
}
else{}
}
}

return minusArray;