ArrayList為什麼要自己實現迭代器

2021-09-12 03:54:53 字數 668 閱讀 6209

arraylist的父類abstractlist已經實現了iterator介面,為什麼arraylist還要自己實現iterator介面呢?

arraylist實現iterator,是為了避免arraylist在迭代過程中陣列結構發生變化的而產生的問題,這個處理機制稱為fail-fast機制,實際是乙個樂觀鎖,實現如下。

arraylist有乙個modcount屬性,在add(),remove()執行開始,modcount++。arraylist建立迭代器物件時,會複製當前modcount到expectedmodcount,迭代器每次執行next(),remove(),foreachremaining()時,都判斷modcount是否與expectedmodcount相同,若不相同,則丟擲異常。

private class itr implements iterator

final void checkforcomodification()

}

arraylist不是執行緒安全的,fail-fast不是來解決多執行緒的問題的。這個的實際意義在於單執行緒時,新手在foreach中做add(),remove()操作。如果要解決多執行緒,要在add()和remove()中加上modcount的效驗了。

為什麼要分析自己

當然有功利的目標,主要是想搞明白智慧型的本質,創造的過程。但是一定還有別的心理層面的考慮。大約是因為發現自己對自己很滿足,很滿意,想知道這種自足和自滿以至於自戀究竟來自 就好比上面這兩段話,我為什麼會先說具體的目標,然後才說心理的目標,這其實就是乙個問題。我似乎是想表達,我不是沒事幹了,我這麼做還是...

人為什麼要管住自己???

人,你為什麼要管住自己?人,你為什麼要管住自己?人是動物,並且有慾望,慾望就是人的弱點。乙個人只要有慾望,他就有弱點,無欲則剛。我們看和尚為什麼厲害?他可以從容的面對這個世界,是因為他們沒有了 那麼多的慾望。當然,和尚也不是什麼都不追求,他們還是在追求一種喜悅。也就是說,他們進行了選擇性的追求。也就...

我為什麼要累死自己不掙錢?

老師對我們想做程式設計師的同學說,往屆做電子商務的,一般乙個月也能拿三四千,多的到七八千,工作也很輕鬆。而做程式設計師的乙個月最多的 也就三四千,而且他們的鴨梨好大。沒做今年就變老了。老師說完後補充一句 為什麼要累死自己不掙錢呢?我想做程式設計師,所以我申請了加入黑馬訓練營。我不是沒有選擇或者很少選...