Çalışma zamanı hata mesajına göre, Özel Durum aşağıdaki satırda gerçekleşir; Java "ConcurrentModificationException" yineleme çalışırken çalışma zamanı hatası .next()
VirusData
VirusData v = iteratorVirusDB.next();
bir kurucu ve veritabanı gibi virüslerin her biri hakkında bilgi ihtiva eden bir aşırı kurucu bir sınıf;
- Yaylı VName
- Yaylı vDefinition
(xLength gruplar halinde ayrılır) dizgecikli tanımı LCS belirteçleri ile
- Array Aşırı
- şamandıra Depolayabilir burada
Iterator<VirusData> iteratorVirusDB = virusDB.iterator();
VirusDB
ve tip<VirusData>
ArrayList: aşağıda gösterildiği gibi bir not ile tip<VirusData>
arasında
iteratorVirusDB
,() VirusDB
bir .iterator olan Virüs nesneleri (bu noktada isim ve def) böylece bunları daha sonra kullanabilirim.
ArrayList <VirusData> virusDB = new ArrayList<VirusData>();
Ve ile sonlandırmak için hata yukarıdaki tüm açıkladı kullanan bu yöntemde oluşur: Gerçekten konusunda bazı yardım ve tavsiye ile yapabilirdi
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);
...
}
...
}
Programın başarılı bir şekilde çalışmasını sağlamak için bu probleme yaklaşmak. Körük, tam 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)
'ArrayList' öğesini yapısal olarak değiştirdiğinizde yineleyici geçersiz olur. Bir yineleyiciyi üyeler arasında sınıf durumu olarak kaydetme şüphelidir. Bunu neden yapıyorsun? – rlibby
Sadece bir ConcurrentModificationException ile ilgili bir soruya cevap verdim ... http://stackoverflow.com/questions/5145135/java-util-concurrentmodificationexception-on-arraylist/5145156#5145156 –
Eh, gerçekten nasıl yineleyiciler çalışıyorum bilmiyorum Yakın zamanda var olduklarını keşfettiler, bu yüzden deneme yanılma yoluyla çok fazla öğreniyorum. Yani eğer doğru bir şekilde anlarsam, bunu yapmamalıyım 'Iterator iteratorVirusDB = virusDB.iterator(); '? Ama sonra böyle bir şeyi nasıl yineleyebilirim; VirusData v = virusDB.iterator(). Sonraki(); '? Öneriniz için teşekkürler –
Carlos