list迭代器遍歷刪除 java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動的刪除方法刪除元素?
java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動的刪除方法刪除元素?當您是<70時,倒數(shù)第二位是66。您沒有引發(fā)異常,因為以前的列表大小是5。刪除66后,列表大小
java中foreach和迭代器在遍歷List集合,一些情況下為什么能使用集合自動的刪除方法刪除元素?
當您是<70時,倒數(shù)第二位是66。您沒有引發(fā)異常,因為以前的列表大小是5。刪除66后,列表大小為4。第一次遍歷列表大小為5的數(shù)組時,指針66位于index=4中。遍歷列表大小為4的數(shù)組時,指針66位于index=4中newlist.size文件()。
ArrayList中的此方法將判斷列表已被讀取,因此不會引發(fā)異常。
1]]2
3
公共布爾hasnext(){
返回光標!=size
}
A< 90,第二位變了,列表的大小也變了
看ArrayList的源代碼,調用這個方法檢查列表的大小是否每次都變,但是這個方法發(fā)生在hasnext方法之后
1
2
3
4
final void checkForComodification(){
if(modCount!=expectedModCount)
拋出新的Concurrentmodificationexception()
}
刪除list集合為什么要用迭代器?
遍歷常用方法時,將使用數(shù)組下標。刪除其中一個元素時,刪除位置的下標對于相應數(shù)組中的元素將為空,隨后的數(shù)據(jù)將向前推送,導致最后一個位置的下標為空。當你轉到最后一個,它將沒有數(shù)據(jù),然后它將被刪除它的界限。迭代器的原理是只有在有下一項時才取值,沒有下標,這樣可以保證數(shù)據(jù)的一致性