Java 之 集合中的 modCount的作用


 modCount:記錄當前集合被修改的次數

在所有的集合實現類中(Collection與Map中),都會有一個 modCount 的變量出現,它的作用就是記錄當前集合被修改的次數。

下面以ArrayList 類進行說明:

 添加方法:

 

 

 

 

  刪除方法:

  

    可以看出,兩個操作都會影響元素的個數。 

    當我們使用迭代器或 foreach 遍歷時,如果你在 foreach 遍歷時,自動調用迭代器的迭代方法,此時在遍歷過程中調用了集合的add,remove方法時,modCount就會改變,而迭代器記錄的modCount是開始迭代之前的,如果兩個不一致,就會報異常,說明有兩個線路(線程)同時操作集合。這種操作有風險,為了保證結果的正確性, 避免這樣的情況發生,一旦發現modCount與expectedModCount不一致,立即報錯。

  此類的 iterator 和 listIterator 方法返回的迭代器是快速失敗的:在創建迭代器之后,除非通過迭代器自身的 remove 或 add 方法從結構上對列表進行修改, 否則在任何時間以任何方式對列表進行修改, 迭代器都會拋出 ConcurrentModificationException。 因此,面對並發的修改,迭代器很快就會完全失敗, 而不是冒着在將來某個不確定時間發生任意不確定行為的風險。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM