I was trying an exercise where I would add 1000 elements to an arraylist and then remove them systematically from the list again(by specifying the index). The idea behind this is to compare the performance of the LinkedList to the ArrayList.
int totalObjects = 0;
for(int i = 0; i < 1000; i++)
{
totalObjects += 1;
al.add("Object " + totalObjects);
}
System.out.println("The Arraylist size is " + al.size());
If i do the following only half of the elements gets removed…why is that?
for(int index = 0; index < al.size(); index++)
{
al.remove(index);
}
System.out.println("The Arraylist size after removal is " + al.size());
kind regards
Arian
This happens because you are altering the indexes by removing. If you remove element 0, element 1 now becomes element 0. Now when you next remove 1, that is what used to be element 2 and what was element 1 still exists at index 0.
The easiest way to avoid this is to loop backwards from end to beginning.
alternatively, you could just keep removing index 0 until the ArrayList is empty.