Lo arreglé en realidad. Aquí está mi nuevo código.Restando un arrayList de otro 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;
Tengo dos arrayLists y estoy tratando de "restar" una lista de arreglos de otra. Por ejemplo, si tengo un arrayList [1,2,3]
y estoy tratando de restar [0, 2, 4]
, el arrayList resultante debe ser [1,3]
.
Mi código funciona en algunos casos, como si arrayList1 = [4,6]
y arrayList2 = [6]
me dará un resultado de [4]
. Pero si intento algo así como [1,2,4]
y [0,4,8]
consigo esta excepción:
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)
Este es el código que he llegado con. He hecho pruebas y creo que debería funcionar. El usuario ingresa estas listas de arreglos y las clasifica, tampoco conozco Hash o 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;
¿Qué es CS 251? – kukis
@kukis CS 251 será un curso de informática de segundo año en alguna universidad. –