Ошибка выполнения Java «ConcurrentModificationException» при итерации .next () [duplicate]

На этот вопрос уже есть ответ здесь:

Согласно в сообщении об ошибке времени выполнения исключение происходит в следующей строке:

VirusData v = iteratorVirusDB.next();

VirusData - это класс с конструктором и перегруженным конструктором, содержащий конкретную информацию о каждом из вирусов в базе данных, например;

  • String vName
  • String vDefinition

Перегружен

  • Массив с токенизированным определением (разделен на группы xLength)
  • Массив с токенами LCS
  • Float с классом

итераторомVirusDB типа является .iterator () VirusDB , как показано ниже:

Iterator iteratorVirusDB = virusDB.iterator();

VirusDB is и ArrayList типа , где я храню вирусные объекты (имя и определение на данный момент) , чтобы я мог использовать их позже.

ArrayList  virusDB = new ArrayList();

И, наконец, ошибка возникает в этом методе, который использует все вышеупомянутое объяснение :

private void selectDabataseMouseClicked(java.awt.event.MouseEvent evt) {
    while(iteratorVirusDB.hasNext()) {
        VirusData v = iteratorVirusDB.next();               //ERROR LINE
        String vSig = v.signature;                              
        v.tokens = tokenize.raw(vSig, true, tLength);
        ...
     }
     ...
}

Я действительно мог бы получить некоторую помощь и советы о том, как подойти к этой проблеме, чтобы заставить программу работать успешно. Сильфон, полный StackTrace:

run:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
        at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
        at java.util.AbstractList$Itr.next(AbstractList.java:343)
        at project_clean.Main.selectDabataseMouseClicked(Main.java:275)
        at project_clean.Main.access$100(Main.java:11)
        at project_clean.Main$2.mouseClicked(Main.java:76)
        at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6270)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
9
задан Carlos 28 February 2011 в 10:01
поделиться