Предположим, у меня есть a List
объект и итератор для этого списка.Когда я сортирую список, что происходит с его итераторами?
Теперь я отсортировать список с java.util.Collections.sort()
- Что происходит с итератора?
- Является ли его поведение все еще определенным и его можно использовать?
- Если нет, могу ли я предотвратить уничтожение итераторов для списка?
Я знаю, эту проблему можно обойти, изменив дизайн программы, клонируя список, например, но я определенно хочу знать «официальное» поведение Java.
Это однозначный ответ для одного итератора `p`, указывающего на коллекцию` c`. Как насчет того, чтобы два итератора `p` и` q` указывали на одну и ту же коллекцию `c` и выполнялись независимо? Действительно ли _ «кроме самого итератора» означает конкретный экземпляр итератора, например `p`, или это означает любой экземпляр итератора? Я предполагаю, что независимая итерация `p` и` q` приведет к недействительности друг друга (просто потому, что нитераторы не знают о других итераторах, ни коллекция не запоминает всех своих итераторов), но это хорошо, чтобы прояснить ее здесь. Благодаря! – uvsmtid 2016-12-02 02:43:56
@uvsmtid: Это только через этот конкретный итератор. Если у вас есть два итератора над одной и той же коллекцией, вы не можете изменять коллекцию с помощью любого из них, если только это не коллекция, которая явно поддерживает одновременную модификацию. – 2016-12-02 06:30:42