Tôi đã sửa nó. Heres mã mới của tôi.Trừ một arrayList khỏi một 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;
Tôi có hai arrayLists và tôi đang cố gắng "trừ" một arrayList khỏi một danh sách khác. Ví dụ: nếu tôi có một arrayList [1,2,3]
và tôi đang cố gắng trừ [0, 2, 4]
kết quả arrayList phải là [1,3]
.
Mã của tôi hoạt động trong một số trường hợp, như nếu arrayList1 = [4,6]
và arrayList2 = [6]
nó sẽ cho tôi kết quả là [4]
. Nhưng nếu tôi cố gắng một cái gì đó giống như [1,2,4]
và [0,4,8]
tôi nhận được ngoại lệ này:
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)
Đây là mã tôi đã đưa ra. Tôi đã làm thử nghiệm chạy qua nó và với tôi tôi nghĩ rằng nó sẽ làm việc. Người dùng nhập các arrayLists này và chúng được phân loại, tôi cũng không biết Hash hoặc 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 là gì? – kukis
@kukis CS 251 sẽ là khóa học khoa học máy tính năm thứ hai tại một số trường đại học. –