我修正了它。继承人我的新代码。从另一个arrayList中减去一个arrayList
//returns a new IntSet after subtracting a from b
// .minus().toString()
ArrayList<Integer> minusArray = new ArrayList<Integer>();
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;
我有两个arrayLists,我想从另一个“减去”一个arrayList。例如,如果我有一个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)
下面是代码我想出了。我已经完成了对它的测试运行,对我来说我认为它应该可以工作。用户输入这些arrayLists并对它们进行预分类,我也不知道Hash或big-O。
ArrayList<Integer> minusArray = new ArrayList<Integer>();
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;
什么是CS 251? – kukis 2014-08-07 06:03:39
@kukis CS 251将是一所大学的第二年计算机科学课程。 – 2014-12-29 23:45:45