SORU
2 Mart 2009, PAZARTESİ


Ve bir HashMap ConcurrentModificationException

Nesneleri JPA kullanarak ısrar ediyorum. Ana nesne sahibi Bir-Çok başka bir nesne ile ilişkisi yoktur. Diğer bir HashMap nesnesi olarak saklanır. Ne tür bir eşitleme bu sorunu çözmek istiyorsunuz? Tamamen rastgele zamanlarda oluyor ve çok tahmin edilemez. Burada ben hariç:

Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
        at java.util.HashMap$ValueIterator.next(Unknown Source)
        at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555)
        at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
        at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
        at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
        at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
        at org.hibernate.engine.Cascade.cascade(Cascade.java:130)

CEVAP
2 Mart 2009, PAZARTESİ


Bu eşitleme sorun değildir. Bu ise yineledi üzerinde olduğu temel koleksiyonuna bir şey Yineleyici kendisi dışındaki kişiler tarafından değiştirilirse ortaya çıkar.

Iterator it = map.entrySet().iterator();
while (it.hasNext())
{
   Entry item = it.next();
   map.remove(item.getKey());
}

Bu o zaman bir ConcurrentModificationException atmak olacaktır.() hasNext ikinci kez aradı.

Doğru yaklaşım olacaktır

   Iterator it = map.entrySet().iterator();
   while (it.hasNext())
   {
      Entry item = it.next();
      it.remove();
   }

Bu yineleyici varsayarak destekler remove() işlemi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010
  • Willie D.

    Willie D.

    16 Aralık 2006