У меня есть ArrayList, который включает в себя несколько элементов, которые я хочу удалить. У меня есть идентификаторы элементов для удаления, сохраненные в другом списке. Выяснилось, что следующий код должен работать тривиально, но по какой-то причине вызовы remove() возвращают ложное значение:
ArrayList<Integer> toRemove = new ArrayList<Integer>();
ArrayList<JCheckBox> al = new ArrayList<JCheckBox>();
/* Code that adds a bunch of items to al, and a few integers to toRemove */
System.out.println("Size before removing: " + al.size());
for (int i = toRemove.size() - 1; i >= 0; i--) {
System.out.println("Removing id: " + toRemove.get(i) + ": ");
System.out.println(al.get(toRemove.get(i)));
System.out.println(al.remove(toRemove.get(i)));
}
System.out.println("Size after removing: " + al.size());
Я бы получил его, если вызов get() также возвратил ложное значение, но он действительно возвращает объект, о котором идет речь. Что мне здесь не хватает?
Вывод кода выше:
Size before removing: 3
Removing id: 2:
javax.swing.JCheckBox[...]
false
Size after removing: 3