java.lang.IndexOutOfBoundsException

Używam ArrayList do przechowywania „cieni” dla każdego prostokąta na poziomie, ale gdy wykonuję iterację w ten sposób:

for(int n = 0; n < shadows.size(); ++n){
 g2d.fillPolygon(shadows.get(n)[0]);
 g2d.fillPolygon(shadows.get(n)[1]);
 g2d.fillPolygon(shadows.get(n)[2]);
 g2d.fillPolygon(shadows.get(n)[3]);
 g2d.fillPolygon(shadows.get(n)[4]);
 g2d.fillPolygon(shadows.get(n)[5]);
}

dostałemjava.lang.IndexOutOfBoundsException błąd, który wygląda tak:Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 42, Size: 79

Dlaczego otrzymuję błąd, nawet jeśli numer indeksu nie jest równy lub większy niż rozmiar? Program nadal działa normalnie, ale nadal nie chcę, aby zawierał jakiekolwiek błędy.

Wypróbowałem również rozszerzoną pętlę for, ale potem dostajęjava.util.ConcurrentModificationException zamiast

for(Polygon[] polys : shadows){
 g2d.fillPolygon(polys[0]);
 g2d.fillPolygon(polys[1]);
 g2d.fillPolygon(polys[2]);
 g2d.fillPolygon(polys[3]);
 g2d.fillPolygon(polys[4]);
 g2d.fillPolygon(polys[5]);
}

questionAnswers(2)

yourAnswerToTheQuestion