このメソッドでは、ある配列リストのすべての要素を別の配列リストのすべての要素と比較しようとしています。次に、最初の配列リストの要素が2番目の配列リストのどの要素とも等しくない場合は、その要素を削除します。比較ステップと削除ステップのどちらかが間違っていますが、どちらかわかりません。どんな助けでも大歓迎です。
説明が必要な場合は、遠慮なく質問してください。
public static ArrayList<Integer> compareArrayandList(ArrayList<Integer>compare, ArrayList<Integer>array2) {
int[] counter = new int[compare.size()];
for (int x: counter) {
x = 0;
}
for (int i = 0; i < compare.size(); i++) {
counter[i] = 0;
for (int number: array2) {
if (compare.get(i) ==number) {
counter[i]++;
}
}
}
for (int i=0; i<counter.length;i++) {
if (counter[i]==0) {
compare.remove(new Integer(i));
}
}
return compare;
}
編集:(MementoMori提供)コードが機能しない理由は、要素を削除するとArrayListの位置が変化するためです。要素3を削除したとします。これで、要素3は以前とは異なります。