Я написал некоторый код, чтобы увидеть, что происходит, когда коллекция сортируется во время итерации. Кажется, что итератор не выдает никаких исключений, но продолжает выполнять итерацию в обычном режиме. Тем не менее, он дает вам неправильные результаты, если вы ожидаете перебрать несортированную коллекцию. Посмотрите на это:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("D");
list.add("B");
list.add("A");
list.add("C");
list.add("E");
Iterator<String> it = list.iterator();
String s = it.next();
System.out.println(s);
s = it.next();
System.out.println(s);
Collections.sort(list);
Iterator<String> it2 = list.iterator();
s = it.next();
System.out.println(s);
s = it.next();
System.out.println(s);
s = it.next();
System.out.println(s);
while (it2.hasNext()) {
System.out.println(it2.next());
}
}
Надеюсь, это поможет.