Naprawiłem to właściwie. Oto mój nowy kod.Odejmowanie jednej arrayList od innej 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;
Mam dwa arrayLists i staram się "odjąć" jeden ArrayList od drugiego. Na przykład, jeśli mam jedną tablicęList [1,2,3]
i próbuję odjąć [0, 2, 4]
, wynikowa tablicaList powinna być [1,3]
.
Mój kod działa w niektórych przypadkach, np. Jeśli arrayList1 = [4,6]
i arrayList2 = [6]
to da mi wynik [4]
. Ale gdy próbuję coś jak [1,2,4]
i [0,4,8]
otrzymuję ten wyjątek:
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)
Oto kod mam wymyślić. Przeprowadziłem testy przez to i dla mnie myślę, że to powinno działać. Użytkownik wprowadza te arrayLists i są one sortowane, ja też nie wiem, Hash lub 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;
Co to jest CS 251? – kukis
@kukis CS 251 będzie drugim rokiem studiów informatycznych na uniwersytecie. –