Поскольку вопрос уже ответил, то лучший способ - использовать метод удаления объекта итератора, я хотел бы перейти к особенностям места, где была выбрана ошибка "java.util.ConcurrentModificationException"
.
Каждый класс коллекции имеет частный класс, который реализует интерфейс Iterator и предоставляет такие методы, как next()
, remove()
и hasNext()
.
Следующий код выглядит примерно так:
public E next() {
checkForComodification();
try {
E next = get(cursor);
lastRet = cursor++;
return next;
} catch(IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
Здесь метод checkForComodification
реализован как
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
Итак, как вы можете видеть, если вы явно попытаетесь удалить элемент из коллекции. Это приводит к тому, что modCount
отличается от expectedModCount
, что приводит к исключению ConcurrentModificationException
.
Смотрите на Sourcegear DiffMerge. DiffMerge является сравниванием и инструментом слияния от их продуктов Хранилища и Крепости, но они делают его доступным бесплатно как автономный инструмент. Одна достойная внимания особенность - то, что это позволяет diffing всех деревьев каталогов.
Редактирование: , В то время как DiffMerge остается бесплатным инструментом, он ворчит для регистрации со всплывающим окном, по крайней мере, один раз в день (по крайней мере, начиная с версии 4.2). Это также указывает во всплывающем окне:
Избранные новые возможности в будущих выпусках также потребуют регистрации, но базовые функции и меры будут доступны всем.
По необходимости Инструмент Слияния
Даже при том, что По необходимости, очевидно, не, освобождает инструмент слияния. Это 100x лучше, чем TortoiseSvn по умолчанию один. Для интеграции с TortoiseSvn устанавливает инструмент слияния на:
C:\Path-To\P4Merge.exe %base %theirs %mine %merged
Вне всякого сравнения был предложен неоднократно мне.
Я использую KDiff3 в качестве инструмента слияния с 3 путями. Это делает достойное задание.
Слияние Araxis является дорогим, но большим. Дескрипторы 3 путями слияния на файлах или папках действительно хорошо. Я нахожу способ, которым это отображается diffs намного более полезный, чем Windiff или инструмент P4.
CompareIt хорош, я нахожу использование интерфейса командной строки для svn, который это объединяет больше для меня, где черепаха берет на вещах и спрашивает Вас.