Вы можете использовать синтаксис с метками и счетчиками int.
Мой пример с классом String вместо Ball:
CopyOnWriteArrayList<String> bList = new CopyOnWriteArrayList<String>();
bList.add("1");
bList.add("2");
bList.add("3");
bList.add("4");
bList.add("5");
int i = 0;
for (String s : bList) {
System.out.println("outer: " + s);
int j = 0;
l: for (String s2 : bList) {
while(j < i) {
j++;
continue l;
}
System.out.println("inner: " + s2);
}
i++;
}
Вывод будет:
outer: 1
inner: 1
inner: 2
inner: 3
inner: 4
inner: 5
outer: 2
inner: 2
inner: 3
inner: 4
inner: 5
outer: 3
inner: 3
inner: 4
inner: 5
outer: 4
inner: 4
inner: 5
outer: 5
inner: 5
Вы не можете изменять коллекцию в таких условиях. Я имею в виду, что вы не можете удалить какой-либо элемент из коллекции, просматривая его.
Я хотел бы предложить вам поместить все коллизии в некоторую структуру данных, например ArrayList, и удалять элементы ПОСЛЕ итерации (циклы).