У меня есть список, представляющий набор полей, которые должны быть выбраны из моей базы данных. Я передаю это классу, который я использую, чтобы построить строку выбора select. При его создании я получаю исключение ConcurrentModificationException всякий раз, когда я проверяю список # isEmpty. Я изменил его на ImmutableList, и я больше не получаю эту проблему.Отслеживание, когда коллекция была изменена (ConcurrentModificationException)
Однако это меня смущает ... Не следует ли получить исключение UnsupportedOperationException в том месте, где оно было изменено одновременно?
Line бросать исключение:
if (list.isEmpty() || ... null checks) { ... }
Исключение:
at java.util.ArrayList$SubList.checkForComodification(ArrayList.java:1231)
at java.util.ArrayList$SubList.size(ArrayList.java:1040)
at java.util.AbstractCollection.isEmpty(AbstractCollection.java:86)
РЕШЕНИЕ:
Список Я проверка #isEmpty был подсписок. Главный список был отредактирован после создания подписок (для добавления некоторых обязательных полей). Это вызвало исключение ConcurrentModificationException при проверке #isEmpty. Спасибо.
Итак ... тогда, полагаю, мой вопрос: как я могу получить стек, который у меня есть ... – user2303325
Взятие subList()? Это java.util.ArrayList, который бросает это, а не мою собственную реализацию. – user2303325
Итак, возможно, это связано, хотя: когда я изначально беру в полях, которые будут использоваться, это как большой массив. Итак, я разбиваю этот массив на меньшие списки, используя список # partition. Затем я перебираю эти списки, делая строки с инструкциями ... и когда я проверяю, есть ли список полей раздела isEmpty, я получаю исключение. – user2303325