Этот цикл никогда не прекратится. it.hasNext не продвигает итератор. Вы должны вызвать it.next () для его продвижения. Цикл, вероятно, завершается, потому что k становится равным 5, и в этот момент Arraylist с исключением исключения a bounds.
Правильная форма итерации списка (содержащего строки):
Iterator it = ac.iterator();
while (it.hasNext) {
System.out.println((String) it.next());
}
Или, если список напечатан, например, ArrayList
for (String s : ac) {
System.out.println((String) s);
}
Или, если вы абсолютно точно знаете, что это список массивов и вам нужна скорость, а не краткость:
for (int i = 0; i < ac.size(); i++) {
System.out.println(ac.get(i));
}