Also, in general, do not iterate over things forward and delete (due to the skipping problem, above). Iterate over things backwards and delete. This is true for Table, TableRow, ArrayList, IntList, StringList, et cetera. Here is an example of what happens when you do it wrong vs. right:
For completeness’ sake, although I prefer backwards loops for deleting elements, here’s how to do the same w/ a forward loop the right way:
final IntList nums = IntList.fromRange(10);
println(nums);
println("Forwards:");
for(int i = 0; i < nums.size(); ++i) {
println("index:", i, TAB, "value:", nums.get(i));
nums.remove(i--);
}
println(nums);
exit();
B/c we’re emptying the whole container, the index i is stuck at value 0 on all iterations.
Here’s the same example; but this time we’re sparing the indices containing the values 5 & 8:
final IntList nums = IntList.fromRange(10);
println(nums);
println("Forwards:");
for (int i = 0; i < nums.size(); ++i) {
final int val = nums.get(i);
println("index:", i, TAB, "value:", val);
if (val != 5 & val != 8) nums.remove(i--);
}
println(nums);
exit();
The index i ends up w/ value 2; b/c that’s how many indices which has been spared.