Toplama değişkenleri için Java kodunu ayıklarken, toplama değişkenleri için modcount
üyesini gördüm. Bu ne demek?Koleksiyonda hata ayıklaması yaparken modcount değişkeni nedir?
cevap
Java koleksiyonlarının çoğu "başarısız-hızlı" olan yineleyiciler üretir, yani bir yineleyici oluşturulduktan sonra koleksiyon değiştirilirse yineleyici geçersiz sayılır ve mümkün olan en kısa sürede bir ConcurrentModificationException
atılır. (Daha sonra başarısız oluncaya veya geçersiz veriler döndürülürken).
Bu işlevi desteklemek için, koleksiyonun değiştirilip değiştirilmediğini takip etmelidir. Koleksiyon her değiştiğinde, modcount
değerini artırır. Koleksiyon bir yineleyici ürettiğinde, yineleyici, oluşturulduğu zaman modcount
değerini depolar. Daha sonra, yineleyiciyi kullanmaya çalıştığınızda, kaydedilen modcount
'un ana koleksiyonun geçerli modcount
'dan farklı olup olmadığını kontrol eder; öyleyse yineleyici bir ConcurrentModificationException
ile başarısız olur.
sayesinde bu gerçekten iyi bir açıklama için (Bu kuralın bir istisnası yineleyici
remove
yöntemi gibi yineleyici kendisi (üzerinden yapılan koleksiyona modifikasyonlar) yineleyici geçersiz kalmamasıdır.) Olduğunu. Bunun böyle bir şey yaptığını biliyordum ama detaylı değil – moeTiÇok iyi bir açıklama. Şimdi mantıklı. –
kodu: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.ListItr – roottraveller