Поскольку вопрос уже ответил, то лучший способ - использовать метод удаления объекта итератора, я хотел бы перейти к особенностям места, где была выбрана ошибка "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
.
На общих советах;
Мы реализуем процесс
1) Оператор бизнес-требований (BRS)
2) Функциональная спецификация
3), Техническая спецификация
покрытия BRS, что бизнес-проблемы, и что требования вокруг решений, тестирования, безопасности, надежности и доставки. Это определяет то, что сделало бы успешное решение.
функциональная спецификация детализирует то, что необходимо, как это должно посмотреть, какой длины поля должны быть, и т.д.
технические детали спецификации, куда данные прибывают из, любой хитрый код, который, возможно, должен быть рассмотрен.
клиент владеет требованиями. Разработчики владеют техническими спецификациями, и функциональная спецификация является вторым планом. Тестирование сделано против технических спецификаций (обычно поблочное тестирование) тогда против функциональных спецификаций (обычно тестирование системы) и затем против требований (UAT).
важная часть этого (и мы боремся с) - то, что разработчики все еще должны поставить к функциональной спецификации и исходным бизнес-требованиям. В действительности функциональные спецификации и технические спецификации просто там для ясности.
Короче говоря, моя основная подсказка должна сначала разработать процесс, который Вы хотите реализовать. Тогда ищите соглашение от всех участвующих сторон в Вашем предложенном процессе, затем работайте над шаблонами для установки. Сами шаблоны, только небольшая часть изменения, которое Вы хотите внести.
Не шаблон, но Joel записал несколько статей при записи функциональной спецификации. Он также имеет образец здесь .
Можно купить шаблоны у IEEE и других мест, но я всегда заканчивал тем, что делал свое собственное.
Для технической спецификации, " Код, Завершенный " Steve McDonnell, имеет хороший контрольный список, можно потянуть некоторую информацию из этого. В моем последнем задании я просто сделал шаблон из его заголовков раздела и настроил его оттуда.
До функциональной спецификации, важная вещь состоит в том, чтобы определить все интерфейсы:
должен также быть раздел для бизнес-правил, вещи, которые важны функционально, которые не охвачены ни в каком интерфейсном определении.
Если Вы хотите купить книгу, , Требования к программному обеспечению Karl Wiegers имеют шаблоны для нескольких документов как приложение. К сожалению, я работаю и что конкретная книга дома. Если у кого-то есть он удобный, они могли бы быть в состоянии подтвердить это.
Начнитесь простые, и проложите себе путь оттуда. Так как это - Ваш первый опыт, работающий с этим, используйте документ слова с пунктами маркированного списка. Запишите его, перечитайте его и обеспечьте достаточно детали, что это имеет смысл. Для технических спецификаций можно хотеть привести разработчика к решению, но для функциональных спецификаций, "как" должно быть абсолютно недостающим.
Мне, оказывается, нравится этот среди других: ReadySet.
Он продает про версию также.
Я предложил бы взглянуть на шаблон Roberston's Volere здесь . Они - часть Атлантической Системной Гильдии, вместе с людьми как Tom DeMarco и Timothy Lister известности "Peopleware".
, Поскольку шаблон защищен авторским правом, я не воспроизведу его здесь, но дам Вам некоторые основные заголовки:
существуют намного больше, но это должно дать Вам общее представление. Самая интересная часть шаблона является оболочкой требований, которая перечисляет функциональные требования на своего рода карте сигнала. Снова защищенный авторским правом, но действительно ценный.
Взгляд здесь в главе 9.