al.remove(i);
удаляет элемент с индексом i
.В начале удаления в вашем списке 10000 предметов.После первых 5000 итераций цикла в вашем списке только 5000. Затем вы вызываете al.remove(5000)
, что в массиве размером 5000 больше не разрешено.На предыдущем шаге у вас было 5001 элемент в списке, и он назывался al.remove(4999)
, что было разрешено.
Используйте remove(0)
в цикле или clear()
без цикла, чтобы удалить все элементы.
Ваша основная ошибка, вероятно, заключается в том, что remove(0)
и последующий remove(1)
удаляют первые 2 элемента массива.Но это не тот случай.На самом деле происходит то, что первое утверждение удаляет первый элемент, после чего первоначально второй элемент становится первым, третий - вторым и т. Д. Таким образом, remove(1)
после этого удаляет первоначально третий элемент.Вы бы никогда не удалили изначально второй элемент (и многие другие), если бы продолжили эту логику.